【问题标题】:Configure log4j log level using an external configuration file使用外部配置文件配置 log4j 日志级别
【发布时间】:2011-07-24 05:07:16
【问题描述】:

是否可以使用外部配置文件配置 log4j 日志级别?我希望他们使用项目配置文件来配置日志级别,而不是让用户在 log4j.properties 文件中配置日志级别。

WulfgarPro

【问题讨论】:

  • 您是否打算在用户更新 log4j 设置后重新部署您的应用程序?否则 log4j 将不会接受这些更改。

标签: java configuration log4j configuration-files


【解决方案1】:

这取决于您的构建/制作工具。例如:在 Maven 中我就是这样做的。在 Maven 中,您可以启用“过滤”功能。 Maven 过滤会将所有资源文件中的 ${some_property} 替换为 Maven 中“some_property”的值。

如果我处于开发或生产模式,这就是我更改 Log4J 属性的方式。除此之外,我不知道 Log4J 本身是否有这样的功能。我相信通过 Ant 也可以做到这一点。

【讨论】:

  • @somid3,我可以用 Ant 提取属性 .. 但是如何将它插入到我的 log4j.properties 文件中?
  • 我只是看了一下这个并没有使用它ant filtering。似乎 ant 表示法是用 @s 包围值。您的 Log4J props 文件如下: property_name = @some_value@ 其中“some_value”在您的 build.xml 中定义
  • @somid3 - 我不确定过滤器任务与我的问题有什么关系。我目前的想法是删除 log4j.properties 文件并通过键值项目配置文件以编程方式设置日志记录级别。
  • 过滤器适用于将全局值传递给属性文件时。例如,您的 log4j.properties 将有一行“log4j.rootCategory=@level@”,您可以在 Ant 中定义“级别”。您的项目配置将定义“级别”的值,Ant 将替换您的 log4j.properties 文件中的@level@——我认为这是您的问题,否则您能澄清一下您的情况吗?
  • @somid3 - 过滤器有效。谢谢!我添加了类似这样的内容:<filter token="LOG-LEVEL" value=${LOGGING}。 LOGGING 变量来自我的属性文件,LOG-LEVEL 在 log4j.properties 中定义,如下所示:@LOG-LEVEL@
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
相关资源
最近更新 更多