java - tomcat8 中的 Log4j 不显示日志

标签 java log4j tomcat8

这是 mt Log4j:

log4j.rootLogger=ERROR, CA, FA
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.Target=System.out
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c:%L - %m%n
log4j.appender.FA=org.apache.log4j.RollingFileAppender
log4j.appender.FA.File=${catalina.base}/logs/Z2.log
log4j.appender.FA.MaxFileSize=5MB
log4j.appender.FA.MaxBackupIndex=10
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] [%c:%L]: %m%n
log4j.logger.com.datastax.driver.core=ERROR
log4j.logger.com.dcf=DEBUG

现在我正在使用 tomcat8,在我使用 tomcat7 之前它运行良好,并将日志文件保存在/var/log/tomcat7/logs/Z2.log 下

卸载tomcat7,安装tomcat8后,找不到z1.log文件。

最佳答案

log4j.appender.FA.File=${catalina.base}/logs/Z2.log

我没有足够的声誉来发表评论,但是“CATALINA_BASE”是否被设置为环境属性? 即从“CATALINA_HOME”推断或明确设置?

当您为 log4j 启​​用调试时会发生什么? 这可能会显示为什么未创建日志文件等

我通常做的是保留容器日志记录,但在任何 Web/EE 应用程序中使用 log4j。通过这样做,容器日志记录将无需更改即可工作,并且任何 Web/EE 应用程序都是独立的,即在必要时更容易更改 Web/EE 容器。

对于 Tomcat 8, native 日志记录库是“JULI”,它实现了 java.util.logging API 的几个关键元素。

以下配置适用于

  • Tomcat 8.0.30

  • jdk1.8.0_66

  • log4j 2.5

[web-app-name]/WEB-INF/lib

commons-logging-l.2.jar 
log4j-api-2.5.jar       
log4j-core-2.5.jar      
log4j-jcl-2.5.jar       

[web-app-name]/WEB-INF/classes/log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
   <Properties>
      <Property name="LOG_FILE_PATH">${sys:catalina.home}/logs</Property>
      <Property name="PATTERN_JBOSS" >%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %m%n</Property>
      <Property name="PATTERN_TOMCAT">%d{dd-MMM-yyyy HH:mm:ss.SSS} %-5p [%t] %m%n</Property>
      <Property name="PATTERN"       >${PATTERN_JBOSS}</Property>
   </Properties>

   <Appenders>
      <Console name="console">
         <PatternLayout pattern="${PATTERN_TOMCAT}"/>
      </Console>

      <RollingFile name="daily-file" fileName   ="${LOG_FILE_PATH}/globaltrax.log"
                                     filePattern="${LOG_FILE_PATH}/globaltrax-%d{yyyy-MM-dd}.log">
         <PatternLayout pattern="${PATTERN_JBOSS}"/>
         <TimeBasedTriggeringPolicy/>
      </RollingFile>
   </Appenders>

   <Loggers>
      <Root level="WARN">
         <AppenderRef ref="console"/>
      </Root>

      <logger name="lpms.web.PurchaseOrderAction" level="TRACE">
         <AppenderRef ref="console"/>
      </logger>

      <logger name="lpms.web.PurchaseOrderAction" level="TRACE">
         <AppenderRef ref="daily-file"/>
      </logger>
   </Loggers>
</Configuration>

这定义了一个控制台记录器和一个典型的每日日志文件记录器。

请注意,必须将“CATALINA_HOME”设置为“系统”环境变量——这在以下行中使用:

<Property name="LOG_FILE_PATH">${sys:catalina.home}/logs</Property>

关于java - tomcat8 中的 Log4j 不显示日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33327655/

相关文章:

java - Spring AWS S3 : How to upload an image and get a URL which shows it rather than downloads it?

java - Log4j 不使用 JBoss 6.1 记录

ssl - OpenSSL 在 LetsEncrypt-Certificate 上使用 -CAFile

java - 使用 java 中的反射在 Play 中动态加载 View 类

Java 无法解析 org.apache.activemq.util

java - caliper 基准测试中的非确定性分配行为

java - 使用 log4j 以编程方式登录到多个文件

java - WAR 文件部署到 Tomcat 失败 : URI scheme error

java - Apache Tomcat 8 仅在浏览器中呈现空白

java - 为什么具有相同数据的两个不同的 HashSet 具有相同的 HashCode?