configuration
是Logback配置的根节点,它可以设置以下信息。
scan:表示配置文件如果发生改变,是否会被重新加载,默认为true。
scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是秒;当scan为true时,此属性生效。默认的时间间隔为1分钟。
debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
configuration下一些配置
(1):用来引入外部资源文件
resource:表示资源路径
(2):每个logger都关联到logger上下文,默认上下文名称为default,但可以使用设置成其他名字,用于区分不同应用程序的记录,一旦设置,不能修改,可以通过%contextName来打印日志上下文名称
(3):自定义变量,使用${}来使用变量
name:变量名
value:变量值
(4):用来指定不同环境来使不同的日志输出。在此标签内相当于隔出了一个标签块,、等可在其中使用并配置。
name:使用的环境名称,多个环境使用,分开,需在application.properties文件中通过spring.profiles.active来指定当前使用的环境,可以用!+ 环境名称表示当前环境不适用,如!dev即dev下禁用此日志配置
:和上面的root配置一致
:和上面的root配置一致
appender
(1):日志输出策略
name:策略名称
class:策略类型。
ch.qos.logback.core.ConsoleAppender是对应的控制台输出策略;
ch.qos.logback.core.rolling.RollingFileAppender是对应的文件输出策略。
(2):日志输出的路径及文件名
(3):过滤规则,可以同时配置多个过滤规则,按照配置顺序执行。
class:过滤器类型。
ch.qos.logback.classic.filter.ThresholdFilter 临界值过滤器,过滤掉低于指定临界值的日志
:日志输出级别
ch.qos.logback.classic.filter.LevelFilter 级别过滤器,被定义的日志级别根据规则过滤。
:日志输出级别
:级别匹配时操作。即当日志的级别和定义的level匹配时,进行的过滤操作。
:不匹配时操作 。即当日志的级别和定义的level匹配时,进行的过滤操作。
级别过滤器 操作枚举有三个:
DENY:日志将立即被抛弃不再经过其他过滤器
NEUTRAL:有序列表里的下个过滤器接着处理日志
ACCEPT:日志会被立即处理,不再经过剩余过滤器
(4):设置日志输出的格式。
class: 目前仅一种输出类型,ch.qos.logback.classic.encoder.PatternLayoutEncoder 把日志转换成字节流写入文件 。
charset:日志输出的编码。
:日志输出的格式。
(5):设置日志切割策略。
class:日志切割策略。
ch.qos.logback.core.rolling.TimeBasedRollingPolicy 按天切割 ;
SizeAndTimeBasedRollingPolicy 按天和文件大小切割 。
:定义了日志的切割方式,切割后存放的文件名。
:指定单个日志文件的上限大小,超限就会进行切割。
:表示只保存最近多少天的日志,以防止日志填满整个磁盘空间。
:所有日志文件总上限 。
(6) : 触发策略,在切割策略进行切割的过程中,满足触发策略也可以触发切割,作为补充条件 。 SizeBasedTriggeringPolicy 按文件大小切割 。
logger
:用来指定某一个包或者具体的类的日志打印级别。
name:指定某个包或者具体的类。
level:指定日志输出级别。
:指定日志输出级别。
value:指定日志输出级别。
:引用自定义的日志输出策略,就是引用。
ref:引用日志输出策略。
additivity:是否向上级logger传递打印信息。默认是true。
root
:用来指定最基础的日志输出级别。
level:指定日志输出级别。
:引用自定义的日志输出策略,就是引用。
ref:引用日志输出策略。
Logback配置示例
简单示例:
?xml version=“1.0” encoding=“UTF-8”?>
<!-- 开发、测试环境 -->
<springProfile name="dev,test">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO" />
<logger name="com.xx.projectName" level="DEBUG" />
</springProfile>
<!-- 生产环境 -->
<springProfile name="prod">
<logger name="org.springframework.web" level="ERROR"/>
<logger name="org.springboot.sample" level="INFO" />
<logger name="com.xx.projectName" level="INFO" />
</springProfile>
<!-- root用来指定最基础的日志输出级别 -->
<root level="INFO">
</root>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Logback详细配置示例: <?xml version="1.0" encoding="UTF-8"?> logback
<property name="log_path" value="/log"/><!-- 如果在Windows环境下使用/开头的路径,将会被指定到项目所在的盘符 -->
<!-- %d{yyyy-MM-dd HH:mm:ss.SSS}:日志输出时间,精确到分按天切割; -->
<!-- %-5level:日志级别,并且使用5个字符靠左对齐; %thread:输出日志的进程名字 -->
<!-- %logger{50}:日志输出者的名字; %msg:日志消息; %n:换行符 -->
<property name="log_pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger{50} - %msg%n"/>
<property name="log_fileNamePattern" value="-%d{yyyy-MM-dd}.%i.log"/>
<property name="log_maxFileSize" value="100MB"/>
<property name="log_maxHistory" value="15"/>
<!-- 输出到控制台,一般生产环境都是后台启动,这个没太大作用 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder charset="UTF-8">
<pattern>${log_pattern}</pattern>
</encoder>
</appender>
<!-- 输出到app.log文件 -->
<appender name="APP" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log_path}/app.log</file>
<encoder charset="UTF-8">
<pattern>${log_pattern}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log_path}/app${log_fileNamePattern}</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${log_maxFileSize}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${log_maxHistory}</maxHistory>
</rollingPolicy>
</appender>
<!-- 输出到sql.log文件 -->
<appender name="SQL" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log_path}/sql.log</file>
<encoder charset="UTF-8">
<pattern>${log_pattern}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log_path}/sql-${log_fileNamePattern}</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${log_maxFileSize}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${log_maxHistory}</maxHistory>
</rollingPolicy>
</appender>
<!-- 自定义包日志级别要加上additivity="false",表示不会向上传递 -->
<logger name="org.springframework">
<level value="WARN"/>
</logger>
<logger name="org.apache" additivity="false">
<level value="WARN"/>
</logger>
<logger name="org.mybatis" additivity="false">
<level value="DEBUG"/>
</logger>
<!-- dao层的sql配置 -->
<logger name="com.example.xxx.dao" level="DEBUG" additivity="false">
<appender-ref ref="SQL" />
</logger>
<!-- root用来指定最基础的日志输出级别 -->
<root level="INFO">
<appender-ref ref="APP"/>
</root>
———————————————— 原文链接:https://blog.csdn.net/h380115990/article/details/107205537/