如何将 log4j 属性更改为 log4j2 属性?

How to change log4j properties to log4j2 properties?

log4j.rootCategory=DEBUG,CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %-30c - %m%n

log4j.logger.org.apache.velocity=WARN

我需要从 log4j 迁移到 log4j2,并且我需要像上面那样更改属性文件。也许有人可以帮助我了解 log4j2.properties 会是什么样子。

这是我自己做的,但我不确定是否正确

appenders = console

appender.console.type = Console
appender.console.name = STDOUT
appender.console.threshold=DEBUG
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%d %-5p %-30c - %m%n

Log4j2 的属性格式不是最流行的格式。您可以查看 this answer 了解此格式背后的逻辑。

您的配置缺少记录器的配置:

appender.1.type=Console
appender.1.name=STDOUT
appender.1.target=SYSTEM_OUT
appender.1.layout.type=PatternLayout
appender.1.layout.pattern=%d %-5p %-30c - %m%n

rootLogger.level=DEBUG
rootLogger.appenderRef.1.ref=STDOUT
rootLogger.appenderRef.1.level=DEBUG

logger.1.name=org.apache.velocity
logger.1.level=WARN

另请注意,appender 的阈值通常配置在 AppenderRef(参见 this question)。

我个人觉得 XML 格式更容易理解:

<Configuration xmlns="http://logging.apache.org/log4j/2.0/config">
  <Appenders>
    <Console
      name="Console"
      target="SYSTEM_OUT">
      <PatternLayout pattern="%d %-5p %-30c - %m%n" />
    </Console>
  </Appenders>
  <Loggers>
    <Root level="DEBUG">
      <AppenderRef
        ref="Console"
        level="DEBUG" />
    </Root>
    <Logger
      name="org.apache.velocity"
      level="WARN" />
  </Loggers>
</Configuration>