将log4j 1.2.14升级到2.12.1错误没有配置根记录器,也没有创建日志文件

Ran*_*aul 5 java log4j log4j2

我们正在将log4j升级1.2.142.12.1,我的log4j2.properties文件如下

status = error

log4j2.appender.console.type = Console
log4j2.appender.console.name = LogToConsole
log4j2.appender.console.layout.type = PatternLayout
log4j2.appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

#log4j2.appender.file.type = File
#log4j2.appender.file.name = LogToFile
#log4j2.appender.file.fileName=logs/app.log
#log4j2.appender.file.layout.type=PatternLayout
#log4j2.appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

# Rotate log file
log4j2.appender.rolling.type = RollingRandomAccessFile 
log4j2.appender.rolling.name = LogToRollingRandomAccessFile
log4j2.appender.rolling.fileName = ${server.home}/logs/server.log
log4j2.appender.rolling.filePattern = logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz
log4j2.appender.rolling.layout.type = PatternLayout
log4j2.appender.rolling.layout.pattern = %d %p %C{1.} [%t] %m%n
log4j2.appender.rolling.policies.type = Policies
log4j2.appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
log4j2.appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.rolling.policies.size.size=10MB
log4j2.appender.rolling.strategy.type = DefaultRolloverStrategy
log4j2.appender.rolling.strategy.max = 10

# Log to console and rolling file
#logger.app.type = AsyncLogger
log4j2.logger.app.name = com.ssl.server
log4j2.logger.app.level = info
log4j2.logger.app.additivity = false
log4j2.logger.app.appenderRef.rolling.ref = LogToRollingRandomAccessFile
log4j2.logger.app.appenderRef.console.ref = LogToConsole

log4j2.rootLogger.level = info
log4j2.rootLogger.appenderRef.stdout.ref = LogToConsole
Run Code Online (Sandbox Code Playgroud)

我的pom.xml中具有以下依赖性

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.12.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.12.1</version>
    </dependency>       
Run Code Online (Sandbox Code Playgroud)

我正在如下初始化记录器

private static final org.apache.logging.log4j.Logger LOG = org.apache.logging.log4j.LogManager.getLogger(SSLServer.class.getName());
Run Code Online (Sandbox Code Playgroud)

当我使用“ main()正在获取以下错误” 启动独立的Java应用程序server.log且未创建文件时,我对以下错误进行了一些研究,并且大多数文章都引用了log4j2.xml配置,而在我的配置中没有任何更改有效log4j2.properties

log warn: org.apache.logging.log4j.status.StatusLogger - No Root logger was configured, creating default ERROR-level Root logger with Console appender
No Root logger was configured, creating default ERROR-level Root logger with Console appender
Run Code Online (Sandbox Code Playgroud)

dig*_*ise 3

有几点需要注意:

  • 确保类路径上没有任何其他 log4j2 配置文件。这个列表并不小,而且可能会出错。请参阅此处的文档
  • 通过增加状态消息从log4j2中获取调试信息:(status = infodebugtrace
  • 从所有属性中删除log4j2.前缀,这样就log4j2.appender.console.type = Console变成了appender.console.type = Console
  • 将文件日志记录添加到您的rootlogger
    rootLogger.appenderRef.rolling.ref = LogToFile