logback.xml配置文件,设置系统日志和错误日志分离记录

    技术2023-06-02  80

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <!--控制台日志, 控制台输出 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符--> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n</pattern> </encoder> </appender> <!--info文件日志 --> <appender name="infoRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 过滤日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <!-- 如果命中就禁止这条日志 --> <onMatch>DENY</onMatch> <!-- 如果没有命中就使用这条规则 --> <onMismatch>ACCEPT</onMismatch> </filter> <encoder> <pattern> %msg%n </pattern> </encoder> <!--日志文件输出的文件名--> <file>${catalina.base}/logs/scienceManagerInfo.log</file> <!-- 滚动策略 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${catalina.base}/logs/scienceManagerInfo.%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <encoder> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n</pattern> </encoder> </appender> <!-- error文件日志 --> <appender name="errorRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 过滤日志 --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <encoder> <pattern> %msg%n </pattern> </encoder> <!--日志文件输出的文件名--> <file>${catalina.base}/logs/scienceManagerError.log</file> <!-- 滚动策略 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${catalina.base}/logs/scienceManagerError.%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <encoder> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n</pattern> </encoder> </appender> <logger name="org.springframework"> <level value="INFO" /> </logger> <logger name="java.sql" additivity="true" level="DEBUG" > <appender-ref ref="CONSOLE" /> <appender-ref ref="STDOUT" /> </logger> <!--显示日志--> <logger name="org.springframework.jdbc.core" additivity="true" level="DEBUG" > <appender-ref ref="CONSOLE" /> <appender-ref ref="STDOUT" /> </logger> <logger name="com.swt"> <level value="INFO" /> </logger> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="console" /> <appender-ref ref="infoRollingFile" /> <appender-ref ref="errorRollingFile" /> </root> </configuration>

    创建info和error各自的<appender>标签,通过<filter>标签来过滤日志,最后在<root>标签中添加各自的引用,具体的配置参考上述代码(有详细注解)

    项目运行时,就会在Tomcat服务器中创建对应的日志文件

    中途遇到了一个问题,logger.error()打印的日志会正常生成文件,文件中也能正常打印出日志,但是logger.info()只会生成文件,文件中也只有系统启动的日志,在程序中打印的info日志并没有写入,后来检查发现,在配置文件中设置了日志级别为error,将其改成info即可,如下图所示

     

    关于日志级别,以及详细的logback.xml配置文件中的标签含义,参考

    https://www.cnblogs.com/warking/p/5710303.html

    https://www.cnblogs.com/z-x-p/p/11686963.html

    Processed: 0.009, SQL: 9