<?xml version="1.0" encoding="UTF-8"?>
<!--
-scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true
-scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
- 当scan为true时,此属性生效。默认的时间间隔为1分钟
-debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
- configuration 子节点为 appender、logger、root
-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>logback</contextName>
<!-- 日志根目录 对于分布式项目最好以 项目名/工程名 这样就能快速准确的找到对应的日志-->
<springProperty scope="context" name="LOG_HOME" source="logging.path" defaultValue="E:/test/logback"/>
<!-- 日志文件名称-->
<property name="LOG_PREFIX" value="log" />
<!-- 日志文件编码-->
<property name="LOG_CHARSET" value="UTF-8" />
<!-- 日志文件路径+日期-->
<property name="LOG_DIR" value="${LOG_HOME}/%d{yyyyMMdd}" />
<!--对日志进行格式化-->
<property name="LOG_MSG" value="- | [%X{requestUUID}] | [%d{yyyyMMdd HH:mm:ss.SSS}] | [%level] | [${HOSTNAME}] | [%thread] | [%logger{36}] | --> %msg|%n "/>
<!--文件大小,默认10MB-->
<property name="MAX_FILE_SIZE" value="1KB" />
<!--<property name="MAX_FILE_SIZE" value="50MB" />-->
<!-- 配置日志的滚动时间 ,表示只保留最近 10 天的日志-->
<property name="MAX_HISTORY" value="10"/>
<!--输出到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- 输出的日志内容格式化-->
<encoder>
<pattern>${LOG_MSG}</pattern>
<charset>${LOG_CHARSET}</charset>
</encoder>
</appender>
<!-- 定义 ERROR 日志的输出到文件:-->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<append>true</append>
append: true,日志被追加到文件结尾; false,清空现存文件;默认是true-->
<!--下面为配置只输出error级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<OnMismatch>DENY</OnMismatch>
<OnMatch>ACCEPT</OnMatch>
</filter>
<!--日志文件路径,日志文件名称-->
<!--<File>${LOG_DIR}</File>-->
<!--设置滚动策略,当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件路径,新的 ERR 日志文件名称,“ i ” 是个变量 -->
<FileNamePattern>${LOG_DIR}/error_${LOG_PREFIX}_%i.log</FileNamePattern>
<!--配置日志的滚动时间 ,表示只保留最近 10 天的日志-->
<MaxHistory>${MAX_HISTORY}</MaxHistory>
<!--当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB-->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!--输出的日志内容格式化-->
<encoder>
<pattern>${LOG_MSG}</pattern>
<charset>${LOG_CHARSET}</charset>
</encoder>
</appender>
<!--定义 DEBUG 日志的输出到文件:-->
<appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<append>true</append>
append: true,日志被追加到文件结尾; false,清空现存文件;默认是true-->
<!--下面为配置只输出debug级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<OnMismatch>DENY</OnMismatch>
<OnMatch>ACCEPT</OnMatch>
</filter>
<!--日志文件路径,日志文件名称-->
<!--<File>${LOG_DIR}</File>-->
<!--设置滚动策略,当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件路径,新的 ERR 日志文件名称,“ i ” 是个变量-->
<FileNamePattern>${LOG_DIR}/debug_${LOG_PREFIX}_%i.log</FileNamePattern>
<!--配置日志的滚动时间 ,表示只保留最近 10 天的日志-->
<MaxHistory>${MAX_HISTORY}</MaxHistory>
<!--当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB-->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!--输出的日志内容格式化-->
<encoder>
<pattern>${LOG_MSG}</pattern>
<charset>${LOG_CHARSET}</charset>
</encoder>
</appender>
<!-- 定义 INFO 日志的输出到文件:-->
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<append>true</append>
append: true,日志被追加到文件结尾; false,清空现存文件;默认是true-->
<!--下面为配置只输出debug级别的日志-->
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<OnMismatch>DENY</OnMismatch>
<OnMatch>ACCEPT</OnMatch>
</filter> -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!--过滤掉TRACE和DEBUG级别的日志 -->
<level>INFO</level>
</filter>
<!--日志文件路径,日志文件名称-->
<!--<File>${LOG_DIR}/info_${LOG_PREFIX}.log</File>-->
<!--设置滚动策略,当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件路径,新的 ERR 日志文件名称,“ i ” 是个变量 -->
<!--<FileNamePattern>${LOG_DIR}/archived/log_%d{dd-MM-yyyy}_%i.log</FileNamePattern>-->
<FileNamePattern>${LOG_DIR}/info_${LOG_PREFIX}_%i.log</FileNamePattern>
<!--配置日志的滚动时间 ,表示只保留最近 10 天的日志-->
<MaxHistory>${MAX_HISTORY}</MaxHistory>
<!--当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB-->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 输出的日志内容格式化-->
<encoder>
<pattern>${LOG_MSG}</pattern>
<charset>${LOG_CHARSET}</charset>
</encoder>
</appender>
<!-- 自定义日志的输出到文件:-->
<appender name="gordon_controller" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_DIR}/gordon_controller_${LOG_PREFIX}_%i.log</FileNamePattern>
<!--配置日志的滚动时间 ,表示只保留最近 10 天的日志-->
<MaxHistory>${MAX_HISTORY}</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>${LOG_MSG}</pattern>
<charset>${LOG_CHARSET}</charset>
</encoder>
</appender>
<!-- 自定义日志的输出到文件:-->
<appender name="gordon_propertiesTest" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_DIR}/gordon_properties_${LOG_PREFIX}_%i.log</FileNamePattern>
<!--配置日志的滚动时间 ,表示只保留最近 10 天的日志-->
<MaxHistory>${MAX_HISTORY}</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>${LOG_MSG}</pattern>
<charset>${LOG_CHARSET}</charset>
</encoder>
</appender>
<!--<logger name="com.gordon.controller" level="DEBUG" additivity="false">
<appender-ref ref="gordon_controller"></appender-ref>
</logger>
不能直接在这里写additivity=“false”,否则只会记录到文件中而不在控制台打印。
解决办法:看下面的多环境配置<springProfile></springProfile>
<logger name="com.gordon.propertiesTest" level="DEBUG" additivity="false">
<appender-ref ref="gordon_propertiesTest"></appender-ref>
</logger>-->
<root level="DEBUG">
<appender-ref ref="CONSOLE" />
<appender-ref ref="ERROR" />
<appender-ref ref="DEBUG" />
<appender-ref ref="INFO" />
</root>
<!-- additivity 设为false,则logger内容不附加至root ,配置以配置包下的所有类的日志的打印,级别是 ERROR-->
<logger name="org.springframework" level="ERROR" />
<logger name="org.apache.commons" level="ERROR" />
<logger name="org.apache.zookeeper" level="ERROR" />
<logger name="com.alibaba.dubbo.monitor" level="ERROR"/>
<logger name="com.alibaba.dubbo.remoting" level="ERROR" />
<!-- 测试环境+开发环境. 多个使用逗号隔开. -->
<springProfile name="test,dev">
<!--logger可定义出分包分文件存储日志,如下:-->
<logger name="com.gordon.controller" level="DEBUG" additivity="true">
<appender-ref ref="gordon_controller"></appender-ref>
</logger>
<!--开发/测试环境 设置additivity="true"为了能在控制台中打印出信息
其实这些在开发/测试环境都可以不配,因为addivity=“true"后,这些配置根本没有生效,
而是直接将信息上传到root根节点去了,网上说会打印两次,我这里是springboot2.0.3却只打印一次,
而且日志也没有记录到所配置的文件中,但却记录在ERROR,DEBUG,INFO配置的文件中。
-->
<logger name="com.gordon.propertiesTest" level="DEBUG" additivity="true">
<appender-ref ref="gordon_propertiesTest"></appender-ref>
</logger>
</springProfile>
<!-- 生产环境. -->
<springProfile name="prod">
<logger name="com.gordon.controller" level="DEBUG" additivity="false">
<appender-ref ref="gordon_controller"></appender-ref>
</logger>
<!--生产环境 设置additivity="false"只记录到日志文件中-->
<logger name="com.gordon.propertiesTest" level="DEBUG" additivity="false">
<appender-ref ref="gordon_propertiesTest"></appender-ref>
</logger>
</springProfile>
</configuration>
SpringBoot LogBack配置
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- (转载 Spring Boot-日志配置) 在src/main/resources下创建logback-sprin...
- SpringBoot框架内部集成了LogBack日志,默认使用LogBack的base.xml配置内容来输出日志到...
- 正文 日志文件在开发中至关重要,是日后查看异常,排查bug的重要依据。像我大安卓,也会有日志记录类Thread.U...
- 问题描述 配置内容: 报错日志: 原因分析 涉及报错的源码在org.springframework.util.Re...