logback info/error打印在同一文件

如题所述

第1个回答  2022-07-09
logback.xml

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <springProperty scope="context" name="moduleName" source="spring.application.name"

                    defaultValue="application"/>

    <springProperty scope="context" name="logsPath" source="logging.path"

                    defaultValue="logs"/>

    <springProperty scope="context" name="hostname" source="eureka.instance.ip-address"

                    defaultValue="127.0.0.1"/>

    <property name="log.base" value="${logsPath}" /> <!-- 日志路径,这里是相对路径,web项目eclipse下会输出到eclipse的安装目录下,如果部署到linux上的tomcat下,会输出到tomcat/bin目录 下 -->

    <property name="log.moduleName" value="${moduleName}" />  <!-- 模块名称, 影响日志配置名,日志文件名 -->

    <property name="log.max.size" value="100MB" /> <!-- 日志文件大小,超过这个大小将被压缩,或者第二天时,昨天的日志不过有没有超过这个大小也会压缩 -->

    <!-- 参考SpringBoot默认的logback配置,增加了error日志文件 -->

    <!-- org/springframework/boot/logging/logback/base.xml  -->

    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />

    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />

    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

    <property name="LOG_PATH" value="${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}"/>

    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <!-- 控制台日志 -->

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">

        <encoder>

            <pattern>${CONSOLE_LOG_PATTERN}</pattern>

        </encoder>

    </appender>

    <appender name="file-info" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <append>true</append>

        <prudent>false</prudent>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <!-- rollover daily hours -->

            <fileNamePattern>${log.base}/archive/${log.moduleName}-INFO-%d{yyyy-MM-dd}-%i.log.zip </fileNamePattern>

            <timeBasedFileNamingAndTriggeringPolicy

                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

                <!-- or whenever the file size reaches 100MB -->

                <maxFileSize>${log.max.size}</maxFileSize>

            </timeBasedFileNamingAndTriggeringPolicy>

            <maxHistory>30</maxHistory>

        </rollingPolicy>

        <encoder>

            <pattern>%-4relative %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n

            </pattern>

        </encoder>

        <!-- 此日志文件只记录info级别,不记录大于info级别的日志 -->

        <filter class="ch.qos.logback.classic.filter.LevelFilter">

            <level>INFO</level>

            <level>ERROR</level>

        </filter>

    </appender>

    <!-- 异步输出 -->

    <appender name ="async-file-info" class= "ch.qos.logback.classic.AsyncAppender">

        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->

        <discardingThreshold >0</discardingThreshold>

        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->

        <queueSize>512</queueSize>

        <!-- 添加附加的appender,最多只能添加一个 -->

        <appender-ref ref ="file-info"/>

    </appender>

    <!-- 日志总开关 -->

    <root level="INFO">

        <appender-ref ref="CONSOLE" />

        <appender-ref ref="async-file-info" />

        <!--<appender-ref ref="FILE_ERROR" />-->

    </root>

    <!-- 日志过滤 -->

    <!--<logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>-->

    <!--<logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"/>-->

    <!--<logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>-->

    <!--<logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN"/>-->

    <!--<logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>-->

    <!--<logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR"/>-->

    <!--<logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>-->

</configuration>
相似回答