java 如何在logback-spring.xml中的多个位置写入日志

kupeojn6  于 2023-01-11  发布在  Java
关注(0)|答案(2)|浏览(104)

是否可以使用logback-spring.xml在多个位置创建日志?我尝试过这样做,但只要我给予两个位置,它就会在默认位置创建日志。下面是提到的logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">

    <property name="springAppName" value="app-name"/>
    <springProperty name="maxLogHistoryInDays" source="log.maxLogHistoryInDays"/>
    <springProperty name="logPath" source="log.path"/>
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%d{dd MMM yyyy ;HH:mm:ss.SSS} %highlight(%level) [%thread] %property{HOSTNAME} ${springAppName:-} [%X{X-B3-TraceId}] 
                %logger{0}.%M\(%line\) - %msg%n
            </pattern>
        </encoder>
    </appender>
    <appender name="fileAppender"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logPath}/${springAppName}/application.log</file>
        <file>application.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>application_%d{yyyy-MM-dd}_%i.log</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <maxHistory>${maxLogHistoryInDays}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{dd MMM yyyy ;HH:mm:ss.SSS} %level [%thread] %property{HOSTNAME} ${springAppName:-} [%X{X-B3-TraceId}]
                %logger{0}.%M\(%line\) - %msg%n</pattern>
        </encoder>
    </appender>

    
    <root level="INFO">
        <appender-ref ref="consoleAppender" />
        <appender-ref ref="fileAppender" />
    </root>

</configuration>

在这里,当给定两个路径时,将在默认位置创建日志。当仅提及路径时,即第一个路径,它工作正常,将在自定义位置创建日志。

xwbd5t1u

xwbd5t1u1#

它不可能提供多个文件路径在同一个appender块,但你可以这样做,通过添加多个appender块在您的配置文件,如-

<appender name="fileAppender" ............>
<appender name="fileAppender2" ............>
.
.
<root level="INFO">
        <appender-ref ref="consoleAppender" />
        <appender-ref ref="fileAppender" />
        <appender-ref ref="fileAppender2" />
</root>

你可以在不同的appender块中提供不同的文件路径。

zyfwsgd6

zyfwsgd62#

您应该将第二个记录器的索引更改为1。

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">

    <property name="springAppName" value="app-name"/>
    <springProperty name="maxLogHistoryInDays" source="log.maxLogHistoryInDays"/>
    <springProperty name="logPath" source="log.path"/>
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%d{dd MMM yyyy ;HH:mm:ss.SSS} %highlight(%level) [%thread] %property{HOSTNAME} ${springAppName:-} [%X{X-B3-TraceId}] 
                %logger{0}.%M\(%line\) - %msg%n
            </pattern>
        </encoder>
    </appender>
    <appender name="fileAppender"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logPath}/${springAppName}/application.log</file>
        <file>application.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>application_%d{yyyy-MM-dd}_%i.log</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <maxHistory>${maxLogHistoryInDays}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{dd MMM yyyy ;HH:mm:ss.SSS} %level [%thread] %property{HOSTNAME} ${springAppName:-} [%X{X-B3-TraceId}]
                %logger{1}.%M\(%line\) - %msg%n</pattern>
        </encoder>
    </appender>

    
    <root level="INFO">
        <appender-ref ref="consoleAppender" />
        <appender-ref ref="fileAppender" />
    </root>

</configuration>

相关问题