【问题标题】:Log4j2 configuration in web applicationWeb 应用程序中的 Log4j2 配置
【发布时间】:2014-02-17 20:38:28
【问题描述】:

我的类路径中有 log4j2 jar 文件。下面是我的 Log4j2.xml。我想将日志写入我的本地文件“G:/test/apps.log”,但我遇到了两个问题:

  1. 当我运行 Web 应用程序时,输出只打印到控制台而不是文件。
  2. 我看到了一些建议将 Log4j2.xml 放在 WEB-INF/classes 中的答案。但是,当我进行干净的构建时,该文件将被删除,那么我应该将配置文件放在哪里?

    注意:我使用的是 Tomcat:7.0.34,Servlet 3。我已经删除了 Cantalina 属性中对 Log4J 的引用。

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration status="warn">
      <appenders>
    
        <Console name="Console" target="SYSTEM_OUT">
          <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    
        <File name="MyFile" fileName="G:/test/apps.log">
          <PatternLayout pattern="%d{yyyy-mm-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>  
    
      </appenders>
    
      <loggers>
    
        <root level="trace">
          <appender-ref ref="MyFile" level="trace" additivity="true"/>
        </root>
    
      </loggers>
    </configuration>
    

【问题讨论】:

    标签: java tomcat logging configuration log4j2


    【解决方案1】:

    您需要类路径中的 log4j-api-2.0 和 log4j-core-2.0 jar 文件。 如果未找到核心 jar,则 api jar 将回退到 SimpleLogger(控制台)实现。

    通过将配置更改为&lt;configuration status="trace"&gt;,您可以查看可能有助于解决配置问题的 log4j2 内部日志记录。 (不过,这也需要 log4j-core-2.0 jar。)

    log4j2.xml 文件可以在类路径中,也可以使用系统属性-Dlog4j.configurationFile=/path/to/log4j2.xml 指定位置,

    【讨论】:

    • 有没有办法只指定一个文件夹,例如 -Dconfig.location=/path/to/folder,然后让 log4j2 查看这个文件夹以搜索 log4j2.xml 文件?在我的应用程序中,我已经有一个文件夹,用于放置配置文件和 log4j2.xml,我不想使用单独的选项标志来启动我的应用程序。
    • log4j.configurationFile 系统属性的替代方法是将log4j2.xml 文件放在类路径中。您可以在类路径中包含该文件夹(包含您的配置文件)。
    • 我知道这件事。我正在寻找一种以编程方式执行此操作的方法。
    猜你喜欢
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 2014-02-27
    • 1970-01-01
    相关资源
    最近更新 更多