logback info/error打印在同一文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logback info/error打印在同一文件相关的知识,希望对你有一定的参考价值。
参考技术A 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.40logger39)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.40logger39 : %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-%dyyyy-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 %dyyyy-MM-dd HH:mm:ss.SSS [%thread] %-5level %logger35 - %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>
Logback日志系统
参考技术A logback的易用性不用多讲,只需要通过下面两行就可以在console中输出日志:程序运行时,logback会查找默认的配置文件logback.xml或者logback-test.xml文件,如果没有找到它就会使用默认的配置,将日志打印到console中。下面是一个配置文件示例:
在多数的Log工具中,级别是可以传递,例如如果指定了日志输出级别为DEBUG,那么INFO、ERROR级别的log也会出现在日志文件。这种默认给程序的调试带来了很多的麻烦。而在logback中可以通过appender中的filter来严格限制日志的输出级别:
有时候一个类中可能要求打印不同的日志信息,例如有的用来调试,有的用来记录程序运行中的某些参数的变化等等。这时候可以通过下面的语句声明不同的日志:
在程序调试中,经常出现的情况是:错误只在某一个或者几个类或者包里,所以只需要打开这几个类或者包里的DEBUG级别的log。在以前的项目,使用spring和hibernate时,一旦打开DEBUG级别的log,程序本身的debug信息就会被Spring和Hibernate的大量日志淹没,大大降低了调试的效率。而logback让这一切变的简单起来了:
以上是关于logback info/error打印在同一文件的主要内容,如果未能解决你的问题,请参考以下文章