如何将 logback.xml 文件转换为 log4j2.properties 文件?

how to convert logback.xml file to log4j2.properties file?

我正在使用带有 springboot 的 logback。但现在我需要从 logback 迁移到 log4j2。我需要将下面的 logback.xml 转换为 log4j2.properties。我需要为 log4j2 添加什么依赖项。请帮我解决这个问题。

<property resource="application-logging.yml" />

<appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <pattern>%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${fileName}/logfile.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
        </Pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${fileName}/logfile.%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
</appender>

<logger name="com.samplelogging.logging.filter" level="INFO">
    <appender-ref ref="INFO_FILE" />
</logger>

<root level="INFO">
    <appender-ref ref="STDOUT" />
</root>

提前致谢!

对于 Log4j2,您可以使用此依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

同样在 pom.xml 的属性部分,您必须指定修复漏洞的最新 log4j2 版本,即

<properties>
    <log4j2.version>2.17.0</log4j2.version>
</properties>

这是我的 log4j2.xml :

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Properties>
        <Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %c:%L - %m%n
        </Property>
        <Property name="LOG_DIR">@log.dir@/@app.name@</Property>
        <Property name="APP_NAME">@app.name@</Property>
    </Properties>
    <Appenders>
        <Console name="Console">
            <PatternLayout pattern="${LOG_PATTERN}" />
        </Console>
        <RollingFile name="rollingFileLogger"
            fileName="${LOG_DIR}/${APP_NAME}.log"
            filePattern="${LOG_DIR}/${APP_NAME}-%d{yyyy-MM-dd}.log">
            <PatternLayout pattern="${LOG_PATTERN}" />
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="com.myorg" level="info">
            <AppenderRef ref="rollingFileLogger" />
        </Logger>
        <Root level="info">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

@log.dir@@app.name@ 是我的 application.properties 文件中实际值的占位符。

要使用 log4j2.properties 而不是 log4j2.xml,示例:

status = warn
name= com.myorg

# Log files location
property.basePath = @log.dir@/@app.name@

# RollingFileAppender name, pattern, path and rollover policy
appender.rolling.type = RollingFile
appender.rolling.name = fileLogger
appender.rolling.fileName= "${basePath}/${APP_NAME}.log"
appender.rolling.filePattern= ${basePath}/app_%d{yyyyMMdd}.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy

# Console appender configuration
appender.console.type = Console
appender.console.name = consoleLogger
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Configure root logger
rootLogger.level = info
rootLogger.appenderRef.rolling.ref = fileLogger