【问题标题】:How to configure another log4j configuration file in Tomcat?如何在 Tomcat 中配置另一个 log4j 配置文件?
【发布时间】:2014-10-19 07:09:26
【问题描述】:

我正在使用 log4j1.2,我是 log4j 的新手。

我希望当我在本地机器上调试时,日志会打印到控制台。 但是当它在 PROD 中运行时,它只是记录到文件中,因为我希望开销最小。

我希望我可以实现这一点(仅在本地机器上打印到控制台而不是在 prod 环境中),而无需在每次部署时修改属性文件。

这是我的 log4j.properties 的样子:

log4j.rootLogger=DEBUG,BAE,console,error


##################production logs###############
log4j.appender.BAE=org.apache.log4j.FileAppender
log4j.appender.BAE.encoding=utf-8
log4j.appender.BAE.Append=true
log4j.appender.BAE.Threshold=INFO
log4j.appender.BAE.layout=org.apache.log4j.SimpleLayout


####################Conole logs####################
##(hope only enable when debuging in local machine)
log4j.appender.console= org.apache.log4j.ConsoleAppender
log4j.appender.console.encoding=utf-8
## DEBUG logs
log4j.appender.console.Threshold = Trace 
log4j.appender.console.layout=org.apache.log4j.SimpleLayout


##################error logs##########################
log4j.appender.error=org.apache.log4j.FileAppender
log4j.appender.error.File=/home/bae/log/error.log 
log4j.appender.error.Threshold = ERROR  
log4j.appender.error.Append=true
log4j.appender.error.layout=org.apache.log4j.SimpleLayout

【问题讨论】:

    标签: java eclipse logging log4j


    【解决方案1】:

    你可以在eclipse的环境中配置另一个log4j配置文件:

    • 首先,在 Eclipse(服务器选项卡)中找到您的 Tomcat 服务器并双击:

    • 接下来,点击Open lauch configuration

    • 在 Tomcat 和 Apply 中添加 log4j 配置参数。

    享受吧!


    Apache log4j 1.2 - Short introduction to log4j中查看更多信息

    【讨论】:

    • 谢谢!!!但是我有一个非常令人困惑的问题,如果我右键单击我的项目--运行配置-->我会在 Apache Tomcat 的选项卡下看到两台服务器,一个名为" New_configuation”,另一个是“Tomcat v7.0 Server at localhost”...如果我在“Tomcat v7.0 Server at localhost”中添加参数,它就不起作用。但如果我听从你的建议,它会起作用!!为什么?
    • 嗯...有趣!它是Tomcat的eclipse适配器的错误吗? ;)
    • 然后,在我遵循您的解决方案之后,我检查参数是否写入“Apache Tomcat”选项卡下名为“New_configuation”的参数。但是您指向的服务器选项卡下的那个实际上名为“Tomcat v7.0 Server at localhost”
    • 运行配置的名称与您在“服务器”选项卡中的服务器定义无关(在“服务器项目”中也可见)。
    【解决方案2】:

    如果路径中没有 log4j 文件,则需要添加如下内容:

    -Dlog4j.configuration="file:///C:/<path>/<nameifLog4jFile>"
    

    另外,如果您在 log4j 文件中使用环境变量,您需要在参数中声明它。我有一个名为 MAS_HOME 的环境变量,用于指定日志文件的路径。然后我不得不将此参数添加到 VM args:

    -DMAS_HOME="c:\EE"
    

    【讨论】:

      【解决方案3】:

      我想将此作为评论,但没有足够的声誉:P

      如果您使用 Maven,This 可能会有所帮助。
      还可以查看this question 以获得另一种解决方案。

      【讨论】:

      • 我没有使用 Maven,也没有 log4j.xml,我打开了属性文件。
      【解决方案4】:

      您可以使用 jvm 参数(来自 Brian Agnew 的回答:log4j configuration via JVM argument(s)?):

      你有 log4j 配置文件吗?只需使用

      引用它
      -Dlog4j.configuration={path to file}
      

      其中 {path to file} 应以 file: 为前缀

      【讨论】:

      • 那么,我的属性文件呢,我需要删除一些东西吗?现在,如果我坚持我的 ole 设置,prod env 仍将打印到无用的控制台。
      • 您可以添加仅在 eclipse jvm 参数中指定的第二个属性文件。该文件不需要命名为 log4j.xml,因此它不会被自动配置拾取。或者它可以在你的类路径之外
      • 我将 "-Dlog4j.configuration="E:\myworkspace\wodinow\src\debug_log4j.properties" 添加到我的 tomcat 参数中,但未打印日志。看来它仍在使用我现有的 log4j .properties.
      • 如果它不在你的类路径中,你必须在它前面加上“file:”。如果是,你应该有一个相对于类路径的路径
      • -Dlog4j.configuration=file:E:\myworkspace\wodinow\src\debug_log4j.properties .. 没用,它似乎仍在寻找我现有的旧 log4j.properties。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2016-01-09
      • 2010-09-18
      • 2014-10-07
      • 1970-01-01
      • 2016-09-11
      相关资源
      最近更新 更多