设置“log4j.properties”文件的绝对路径

2024-01-14

我的网络应用程序使用 apache commons + log4j。

通常 log4j 需要类路径中的配置文件;但我需要将日志记录配置委托给外部文件(我需要在环境中部署 .war,但日志配置(最大大小、位置等)取决于第二个团队。

我的类路径中有一个 commons-logging.properties

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
# log4j.configuration=/absolute/path/where/external/logs/are/log4j.properties

不幸的是,注释行不起作用。

有没有办法使用外部配置文件设置 log4j?


您可以将其设置为系统属性log4j.configuration属性..例如在 J2SE 应用程序中

java -Dlog4j.configuration=file:/path/to/log4j.properties myApp

请注意,该属性值必须是 URL。

有关更多信息,请阅读“默认初始化过程”部分Log4j 手册。 http://logging.apache.org/log4j/1.2/manual.html

也可以让 ServletContextListener 设置系统属性:

import java.util.Enumeration;
import javax.servlet.*;

public class SystemPropertiesHelper implements
        javax.servlet.ServletContextListener {
    private ServletContext context = null;

    public void contextInitialized(ServletContextEvent event) {
        context = event.getServletContext();
        Enumeration<String> params = context.getInitParameterNames();

        while (params.hasMoreElements()) {
          String param = (String) params.nextElement();
          String value = 
            context.getInitParameter(param);
          if (param.startsWith("customPrefix.")) {
              System.setProperty(param, value);
          }
        }
    }

    public void contextDestroyed(ServletContextEvent event) {
    }
}

然后将其放入您的 web.xml 中(context.xml 也应该可以)

<context-param>
        <param-name>customPrefix.property</param-name>
        <param-value>value</param-value>
        <param-type>java.lang.String</param-type>
</context-param>

<listener>
    <listener-class>servletUtils.SystemPropertiesHelper</listener-class>    
</listener>

我从这个监听器代码中得到了这个answer https://stackoverflow.com/questions/372686/how-can-i-specify-system-properties-in-tomcat-configuration-on-startup .

我希望这可以帮助你!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置“log4j.properties”文件的绝对路径 的相关文章

  • 是否有与 Java 的 IdentityHashMap 等效的 Python 版本?

    我正在遍历一个数据结构 想要构建一个映射 X gt Y 的字典 其中 X 是我正在遍历的数据结构中的一个字段 Y 是我正在动态构建的数据结构中的一个字段 X 是不可散列的类型 Java的IdentityHashMap的目的是模拟动态字段 由
  • 使用多个窗口通过 Eclipse 进行调试

    我通常运行双显示器设置 因此我为同一工作区打开两个 Eclipse 窗口 显示不同的文件 当我调试并命中断点时 Eclipse 会切换到 调试 透视图 但它还会在我的两个窗口中显示断点所在的文件 行 即使包含断点的文件在一个窗口中打开 但在
  • 导入的项目抛出 java.lang.ClassNotFoundException

    所以我将一个现有的项目导入到 eclipse 中 但让它工作时遇到了很多麻烦 该项目与其他三个图书馆项目一起提供 谷歌播放服务库 捕获活动 肖像二维码 As soon as I imported the project I went und
  • 使用synchronized关键字和lock有什么区别[重复]

    这个问题在这里已经有答案了 Java 5引入了lock方法 与synchronized关键字相比 使用lock有什么优点和缺点 同步 将锁定该方法内访问的任何资源 lock 允许您进行更精细的控制 例如 仅锁定某些资源 或者仅在满足特定条件
  • 在 Java Servlet 应用程序中设置 HTTP 201 响应的 Location 标头的正确方法是什么

    考虑以下代码向客户端发送 HTTP 201 已创建 响应 String url app things id 42 example response setStatus HttpServletResponse SC CREATED respo
  • 如何解决 javax.net.ssl.SSLHandshakeException 错误?

    我通过 VPN 连接来设置库存 API 来获取产品列表 效果很好 一旦我从网络服务获得结果并绑定到用户界面 而且我将 PayPal 与我的应用程序集成在一起 以便在我拨打电话付款时进行快速结帐 但我遇到了此错误 我使用 servlet 进行
  • 如何统计List中某个元素出现的次数

    我有一个ArrayList Java的Collection类 如下 ArrayList
  • 在 Java 中,对复杂模型使用接口是否会带来性能提升?

    标题很难理解 但我不知道如何以另一种方式总结 欢迎任何澄清的编辑 我被告知并建议使用接口来提高性能 即使在并不特别需要常规 接口 角色的情况下也是如此 在这种情况下 对象是大模型 MVC 意义上的 具有许多方法和字段 向我推荐的 好用处 是
  • new Date() 和日历日期之间的区别

    在实践中 下面两个日期有什么区别 Date date new Date Date date Calendar getInstance getTime 我的理解是 new Date 是基于 UTC GMT 的日期 而日历的 getTime 基
  • JUnit 集成测试的“IT.java”文件名后缀(而不是“Test.java”)是否是一种约定? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我习惯于用一个名称来命名我的 JUnit 集成测试 Test java最后例如DatabaseConnectionTest java并将它们放在
  • Android O - 通知通道和NotificationCompat

    我无法改变这种感觉 Android 开发人员再次提出了一些新东西 却让每个人都对他们如何看待该功能的使用一无所知 我说的是 Android O 中的通知通道 多年来 我一直使用兼容性支持库来避免处理特定平台的细节 即 Notificatio
  • org.apache.http 软件包在 API 级别 23 中被删除。替代方案是什么?

    在更新到最新的 android API 级别 23 Marshmallow 后 通过 build gradle 添加以下更改后 所有 org apache http 类都不起作用 android compileSdkVersion 23 b
  • String.substring 在 Java 中到底做了什么?

    我一直想如果我这样做String s Hello World substring 0 5 然后我就得到一个新字符串s Hello Java API 文档中也记录了这一点 返回一个新字符串 该字符串是该字符串的子字符串 但当我看到下面两个链接
  • Java 8 Streams - 嵌套映射到列表

    firstlist stream map x gt return secondList stream map y gt return a string collect Collectors toList Output I need Get
  • 手写签名对比

    有谁知道java中一种将手写文本样本 例如签名 亲笔签名等 与一个或多个样本进行比较的方法 最好是开源的 你可以看看这个OCR小程序 http www heatonresearch com articles 42 page1 html
  • 从字符串中删除特定字符[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何从字符串中删除特定字符 我有一个 Arraylist 测试数组 String line testingarray get index
  • 为数组生成随机索引

    我知道对于普通整数来说这是这样 但是有索引这样的东西吗 Random dice new Random int n dice nextInt 6 System out println n 你是什 么意思 数组索引是普通数字 所以你可以轻松地做
  • 在 Android 中创建硬链接和符号链接

    我正在创建一个应用程序 我想在其中使用 Android 外部内存文件系统中的硬链接和符号链接 我尝试过使用命令 Os link oldpath newpath Os link oldpath newpath 但是 当我尝试这样做时 我收到此
  • 正确检查 FTP 服务器连接

    我在程序开始时打开与 FTP 服务器的连接 在对服务器执行操作之前 我想检查连接是否已成功建立 最简单快速的方式 因此如果连接消失 我将尝试再次连接 我用这段代码来做到这一点 private boolean checkConnection
  • a.equals(a) 什么时候返回 false?

    我想知道在哪些情况下java中的变量不能相等 使用equals 方法 自身 我这里说的不是对象而是变量本身 只要代码编译并在调用 equals 时返回 false 到目前为止 我发现的唯一情况是 public class A public

随机推荐

  • 实体框架性能问题

    我在实体框架方面遇到了一个有趣的性能问题 我正在使用代码优先 这是我的实体的结构 一本书可以有很多评论 评论与一本书相关联 一篇评论可以有一个或多个评论 一条评论与一条评论相关联 public class Book public int B
  • 如何使用存储过程实现Gridview自定义分页?

    有人可以将我重定向到您自己的博客链接或任何其他链接 解释有关如何使用存储过程实现 gridview 自定义分页的完整教程吗 我在 google 中的搜索给了我 2006 年的旧文章 现在我正在使用 asp net 3 5 和 c aspx
  • Homestead Laravel 继续运行之前的版本

    我已按照以下步骤操作https laravel com docs 8 x homestead updating homestead https laravel com docs 8 x homestead updating homestea
  • 我的应用程序中的 Google 地图不可见

    当我启动我的应用程序时 出现以下错误 V GoogleSignatureVerifier 4962 com myapp application signature not valid Found V GoogleSignatureVerif
  • 创建 Maven 项目,无法解析原型,连接被拒绝

    我怀疑我有 Maven 代理问题 当我创建一个新项目时 1 文件 gt 新建 gt Maven项目 2 我选择原型 在 org apache maven archetypes 中 gt maven 原型 webapp 3 我得到这个错误 无
  • 从其他进程获取模块句柄

    有没有办法使用 C 从另一个进程获取我知道其名称的模块的句柄 GetModuleHandle and GetModuleHandleEx仅从同一进程获取句柄就很好 您可以使用读取进程内存 http msdn microsoft com en
  • 域名可以有两个连续的连字符吗

    我在 SO 上查找了几个问题 这似乎表明不允许使用两个连续的连字符 例如 my website com 但是当我在http www register com index rcmx http www register com index rc
  • Flask-sqlalchemy - PostgreSQL - 为表定义特定模式?

    我想使用flask sqlalchemy 为 模型 定义特定模式 当您在 sqlalchemy 本身中创建表对象时 它有一个用于传递模式名称的参数 我如何在flask sqlalchemy中做到这一点 当您定义模型类时 请使用 table
  • 最佳实践 - 在 EntityFramework 中混合表实体与视图实体?

    我有一个遗留数据库 我想与实体框架进行交互 该数据库经过高度规范化 用于存储有关航班的信息 为了更容易地处理某些数据 编写了许多 SQL 视图来扁平化数据并将某些多表连接转换为更多逻辑信息 快速查看后 我发现在 EF 中使用视图有两个问题
  • Spring Integration 通道统计指标

    不知怎的 我没有捕捉到 Spring Integration Metrics 内容 我想要的是关于每秒有多少消息通过消息通道 最小和最大吞吐量是多少的统计输出 如果我使用newTicketChannel getSendRate 然后我变成以
  • 如何使用 cmis 查询过滤文件夹子级?

    我想通过一个查询从 cmis 1 0 兼容存储库中过滤文件夹的子级 到目前为止 这似乎不可能 所以我决定执行两个查询来检索子项 即文件夹和文档 但是仍然想按自定义类型过滤子项 因此我有以下查询 SELECT cmis objectTypeI
  • R:将多个二元列转换为一个因子变量,其因子是二元列

    我收到了一个可怕的数据集 我正在努力清理它 272 个 字符 变量和 343 个观察值 它由许多二元变量组成 这些二元变量可以概括为具有多个因素的一个变量 因此 不要问 您是个体经营者还是受雇者 并且给定选项 1 自雇 2 受雇 以及可能
  • Mongoose .find() 方法导致请求挂起

    我定义了这条路线 但对其发出的任何请求都会陷入 待处理 状态并永远运行 当我记录代码时 我看到1其次是4 这意味着 find 方法中的代码永远不会被执行 Calendar routes router get calendars req re
  • Hive UDF 用于选择除某些列之外的所有列

    HiveQL 以及一般的 SQL 中常见的查询构建模式是选择所有列 SELECT 或明确指定的一组列 SELECT A B C SQL 没有内置机制来选择除指定的一组列之外的所有列 有多种机制可以排除某些列 如中所述这个问题 https s
  • Visual Studio 2012 - F12 进入 razor renderpartial 停止工作

    我正在使用 Visual Studio 2012 和 Resharper 7 如果我有一个 cshtml 视图 可以在其中渲染部分视图 我可以将标记放在该部分视图的名称上 然后按 F12 这将带我到部分视图的文件 现在它突然停止工作了 而是
  • 关于星形图案

    我正在尝试打印下面的星形图案 我使用以下逻辑来打印 前半部分代码 int i j for i 1 i lt 3 i for j 1 j lt i j System out print for j i 1 j gt 1 j System ou
  • Google App Engine 中的 PHP header() 重定向

    我尝试在 Google App 引擎实例上进行标头重定向 header HTTP 1 1 301 Moved Permanently header Location http location header Connection close
  • MySQL存储过程,处理多个游标和查询结果

    如何在同一个例程中使用两个游标 如果我删除第二个游标声明并获取循环 则一切正常 该例程用于在我的网络应用程序中添加朋友 它获取当前用户的 id 和我们要添加为好友的好友的电子邮件 然后检查该电子邮件是否具有相应的用户 id 如果不存在好友关
  • 使用 python nmap 模块扫描先前扫描生成的主机

    我一直在直接从 python 命令行使用该模块 尝试弄清楚它是如何工作的 并开始拼凑出我想要编写的脚本将如何工作 我想做的是首先进行简单的主机发现扫描 例如 n sP PE 然后使用 all hosts 函数生成实际端口扫描的主机列表 所以
  • 设置“log4j.properties”文件的绝对路径

    我的网络应用程序使用 apache commons log4j 通常 log4j 需要类路径中的配置文件 但我需要将日志记录配置委托给外部文件 我需要在环境中部署 war 但日志配置 最大大小 位置等 取决于第二个团队 我的类路径中有一个