Spring Boot Sping Boot 无法识别log4j2.xml

mccptt67  于 2023-10-16  发布在  Spring
关注(0)|答案(2)|浏览(149)

我尝试在Sping Boot 中使用log4j核心Maven依赖项创建日志。当我尝试在www.example.com中使用下面的代码时application.properties,会生成错误日志
网址:application.properties

# Set the logging level for Spring Framework to ERROR
logging.level.com.crystalbi.push_notifications = INFO

# Define the log file location and log pattern
logging.file.name = errorlogs/error-logs.log 
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
logging.logback.rollingpolicy.max-file-size = 1GB

当我对XML文件做同样的事情时,它不起作用。
我的目标是创建两个单独的日志文件。一个可以存储错误日志(在errorlogs文件夹中)和常规日志(在generallogs文件夹中)的地方。当我创建一个log4j2.xml文件,并尝试再次运行我的服务器来测试该文件时,任何文件夹中都没有存储日志。我到底做错了什么?
我的Log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <!-- General Logs Appender -->
        <RollingFile name="GeneralLog" fileName="generalLogs/app.log" filePattern="generalLogs/app-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
            </PatternLayout>
        </RollingFile>
        
        <!-- Error Logs Appender -->
        <RollingFile name="ErrorLog" fileName="errorlogs/error.log" filePattern="errorlogs/error-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
            </PatternLayout>
            <Filters>
                <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
        </RollingFile>
        
        <Console name="LogToConsole" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    
    <Loggers>
        <Logger name="com.mkyong" level="INFO" additivity="false">
            <AppenderRef ref="GeneralLog"/>
            <AppenderRef ref="LogToConsole"/>
        </Logger>
        <Logger name="org.springframework.boot" level="ERROR" additivity="false">
            <AppenderRef ref="ErrorLog"/>
            <AppenderRef ref="LogToConsole"/>
        </Logger>
        <Root level="ERROR">
            <AppenderRef ref="GeneralLog"/>
            <AppenderRef ref="ErrorLog"/>
            <AppenderRef ref="LogToConsole"/>
        </Root>
    </Loggers>
</Configuration>

我的Maven依赖项:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
</dependency>

我希望在各自的文件夹中获得日志,但它不会工作,我不知道为什么。Sping Boot 3.1.3我是新的这个日志记录的概念,从来没有与此工作。

thtygnil

thtygnil1#

尝试使用:

org.slf4j.Logger

因此,配置文件:

logback-spring.xml
9o685dep

9o685dep2#

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.4.11</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.4.11</version>
</dependency>

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-access</artifactId>
    <version>1.4.11</version>
</dependency>

尝试添加这3个依赖项。
在java文件中创建变量

private final Logger logRefInJava = LoggerFactory.getLogger("logRefInJava");

然后使用上述变量写入日志

logRefInJava.info("This is an info log");

main/resources中的logback.xml。您可以创建任意多的文件。只是不同的变量,并相应地给予对logback.xml的引用。

<configuration>
    <appender name="loggerName" class="ch.qos.logback.core.FileAppender">
        <file>logs/logFileName.json</file>
        <append>true</append>
        <immediateFlush>true</immediateFlush>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <logger name="logRefInJava" level="info">
        <appender-ref ref="loggerName" />
    </logger>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M\(%line\) - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

告诉我进展如何,我们可以进一步讨论。或者你也可以分享你的git仓库,我们可以在那里工作。

相关问题