`

【Logback】文件配置

 
阅读更多
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration>
	<contextName>service</contextName>
	<property name="logback.context" value="logs-service" />
	<property name="logback.path" value="${logback.context}" />
	<property name="logback.additivity" value="true" />
	<property name="logback.pattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}][%thread] %level - %class.%M:%line - %msg%n" />
	
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<!-- encoders are by default assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
		<encoder>
			<charset>UTF-8</charset> 
			<pattern>${logback.pattern}</pattern>
			<!-- 常用的Pattern变量,大家可打开该pattern进行输出观察 -->
			<!-- <pattern> %d{yyyy-MM-dd HH:mm:ss} [%level] - %msg%n Logger: %logger 
				Class: %class File: %file Caller: %caller Line: %line Message: %m Method: 
				%M Relative: %relative Thread: %thread Exception: %ex xException: %xEx nopException: 
				%nopex rException: %rEx Marker: %marker %n </pattern> -->
		</encoder>
	</appender>
    
    <appender name="ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--如果只是想要 Info 级别的日志,只是过滤 info 还是会输出 Error 日志,因为 Error 的级别高, 所以我们使用下面的策略,可以避免输出 Error的日志-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!--过滤 Error-->
            <level>ERROR</level>
        </filter>
        <File>${logback.path}/errors/${logback.context}_error.log</File>
        <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
            <FileNamePattern>${logback.path}/error-logs/${logback.context}-%d{yyyy-MM-dd}_error_%i.log</FileNamePattern>
            <!-- 单个日志文件最多 100MB -->
            <maxFileSize>100MB</maxFileSize>
            <!--只保留最近30天的日志-->
            <maxHistory>30</maxHistory>
            <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
            <!--<totalSizeCap>1GB</totalSizeCap>-->
        </rollingPolicy>
        <!--日志输出编码格式化-->
        <encoder>
            <charset>UTF-8</charset>
            <pattern>${logback.pattern}</pattern>
        </encoder>
    </appender>
    
    <appender name="ALL_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
    	<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!--过滤 Error-->
            <level>DEBUG</level>
        </filter>
        <File>${logback.path}/${logback.context}.log</File>
        <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
            <FileNamePattern>${logback.path}/${logback.context}-%d{yyyy-MM-dd}_%i.log</FileNamePattern>
            <!-- 单个日志文件最多 100MB -->
            <maxFileSize>100MB</maxFileSize>
            <!--只保留最近30天的日志-->
            <maxHistory>30</maxHistory>
            <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
            <!--<totalSizeCap>1GB</totalSizeCap>-->
        </rollingPolicy>
        <!--日志输出编码格式化-->
        <encoder>
            <charset>UTF-8</charset>
            <pattern>${logback.pattern}</pattern>
        </encoder>
    </appender>
    
    <logger name="org.springframework" level="ERROR"></logger>
    <logger name="org.apache" level="ERROR"/>
    <logger name="java.sql" level="ERROR"/>
    <logger name="com.netflix" level="ERROR"/>
    <logger name="com.baomidou.mybatisplus" level="ERROR"/>
    <logger name="org.springframework.cloud.stream.binder.kafka" level="ERROR"/>
    <logger name="org.springframework.core.env" level="ERROR"/>
    <logger name="org.mybatis" level="ERROR"/>
    <logger name="org.hibernate.validator" level="ERROR"/>
    <logger name="org.apache.kafka.common.config" level="INFO"/>

	<!-- additivity:是否向root传递日志 -->
	<springProfile name="pro">
		<property name="logback.level" value="INFO" />
		<root level="${logback.level}">
			<!-- <appender-ref ref="STDOUT" /> -->
	      	<appender-ref ref="ALL_LOG"/>
		</root>
	</springProfile>

	<springProfile name="test">
		<property name="logback.level" value="DEBUG" />
		<root level="${logback.level}">
			<!-- <appender-ref ref="STDOUT" /> -->
	      	<appender-ref ref="ALL_LOG"/>
		</root>
	</springProfile>

	<springProfile name="dev">
		<property name="logback.level" value="DEBUG" />
		<logger name="com.app" level="${logback.level}" additivity="${logback.additivity}"></logger>
		<root level="${logback.level}">
			<appender-ref ref="STDOUT" />
	      	<appender-ref ref="ALL_LOG"/>
		</root>
	</springProfile>
	<!-- 未配置spring.profiles -->
	<springProfile name="default">
		<property name="logback.level" value="INFO" />
		<logger name="com.app" level="${logback.level}" additivity="${logback.additivity}"></logger>
		<root level="${logback.level}">
			<appender-ref ref="STDOUT" />
	      	<appender-ref ref="ALL_LOG"/>
		</root>
	</springProfile>
</configuration>


 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics