tomcat - 没有事件时 log4j 不旋转日志

标签 tomcat log4j

当没有事件时,log4j 不轮换日志(tomcat 服务器记录 catalina.log 和 localhost.log)。这是我的 log4j.properties。但如果日志有事件,则日志正在轮换。请建议任何帮助表示赞赏

Log4j version:- log4j-1.2.17.jar

 log4j.rootLogger=INFO, CATALINA

    log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.out
    log4j.appender.CATALINA.Append=true
    log4j.appender.CATALINA.Encoding=UTF-8
    log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd-HH-mm
    log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
    log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

    log4j.appender.LOCALHOST=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost.log
    log4j.appender.LOCALHOST.Append=true
    log4j.appender.LOCALHOST.Encoding=UTF-8
    log4j.appender.LOCALHOST.DatePattern='.'yyyy-MM-dd-HH-mm
    log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
    log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

    log4j.appender.MANAGER=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.MANAGER.File=${catalina.base}/logs/manager.log
    log4j.appender.MANAGER.Append=true
    log4j.appender.MANAGER.Encoding=UTF-8
    log4j.appender.MANAGER.DatePattern='.'yyyy-MM-dd-HH-mm
    log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
    log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

    log4j.appender.HOST-MANAGER=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.HOST-MANAGER.File=${catalina.base}/logs/host-manager.log
    log4j.appender.HOST-MANAGER.Append=true
    log4j.appender.HOST-MANAGER.Encoding=UTF-8
    log4j.appender.HOST-MANAGER.DatePattern='.'yyyy-MM-dd-HH-mm
    log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
    log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.Encoding=UTF-8
    log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

    # Configure which loggers log to which appenders
    log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST
    log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=\
      INFO, MANAGER
    log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]=\
      INFO, HOST-MANAGER

最佳答案

这在 DailyRollingFileAppender 中是预期的,因为当实际记录某些内容时,翻转作为 subAppend() 方法的一部分发生。此方法的 Javadoc 指出:

Before actually logging, this method will check whether it is time to do a rollover. If it is, it will schedule the next rollover time and then rollover.

如果您要求文件在午夜轮换 - 将日志消息安排在 00:00:00 可能是最简单的。这将触发日志文件翻转。如果您使用的是 JEE,您可以执行以下操作:

import javax.ejb.Schedule;
import javax.ejb.Singleton;

@Singleton
public class RollLogs {
        static Logger logger = Logger.getLogger(RollLogs.class);
    @Schedule(second="0", minute="0", hour="0", dayOfWeek="*", persistent=false)
    public void rollLogs() {
        logger.info("midnight");
    }
}

关于tomcat - 没有事件时 log4j 不旋转日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20879995/

相关文章:

java - 如何配置log4j.xml以获取 "javax.net.debug"的调试信息

java - Log4j创建动态文件

java - 无法使用spring将大文件上传到tomcat

java - Tomcat DBCP 连接不足

java - http 请求在已部署的 Spring Boot 应用程序中如何工作?

java - 配置 log4j 在登录模式之前调用静态函数

eclipse - 如何防止 hibernate 日志到我的控制台(eclipse 和 tomcat 通用日志)?

tomcat - 如何在 Java 代码中计算 SHA-256 Tomcat 8 DataSourceRealm 兼容哈希?

非 HTTP 负载的 Java 容器选项

tomcat - 无需 configureAndWatch 动态更改 log4j 日志级别