我是靠谱客的博主 搞怪翅膀,最近开发中收集的这篇文章主要介绍logback日志配置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

logback日志配置

    • logback依赖
    • logback主要标签
    • logback-spring.xml配置案例

logback依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>

spring-boot-starter-web 里已经包含了

springboot默认打印到控制台,如果记录到日志文件,配置
logging-file 和 logging-path
同时存在的话,logging-file生效

logback-spring(推荐用spring命名).xml详细配置
application配置:logging.config:classpath:logback-spring.xml

logback主要标签

configuration

根标签 一个configuration对应多个logger(可选的) 一个root(可选的),
scan:文件修改后,重新加载
scanPeriod=30 second
默认1分钟
debug=true
打印logback自带的日志

logger 可以用来指定具体的包、类的日志

logger将控制'name'包下的所有类的日志的打印
name:类名或包名,标志该 logger 与哪个包或哪个类绑定
level:若没有设置打印级别,则继承他的上级<root>的日志级别,默认'DEBUG;
additivity:默认为true,将此loger的打印信息向上级传递

root 只有一个level属性,可以引用配置的每一个appender日志
appender具体的配置日志的标签

name:这个日志appender的名称
class:输出目标实现类,主要有两种ConsoleAppender(控制台)、RollingFileAppender(文件)
RollingFileAppende 有两个 子组件
RollingPolicy
负责执行翻转所需要的操作,
TriggeringPolicy 确定是否、何时翻转
RollingPolicy 负责什么。TriggeringPolicy 负责什么时候
滚动策略
TimeBasedRollingPolicy 根据时间执行翻转规则
SizeAndTimeBasedRollingPolicy 基于时间和日志大小翻转

encoder配置日志的格式

案列:%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) --- [%15.15(%thread)] %cyan(%-40.40(%logger{40})) : %msg%n
%d{yyyy-MM-dd HH:mm:ss.SSS} 日期
%-5level 日志级别
%highlight()
高亮颜色,info为蓝色,warn为浅红,error为加粗红,debug为黑色
%thread 线程名
%15.15()
左边不够15位补空格,超过15位,截取
%-15.15()
右边不够15位补空格,超过15位,截取
%logger 打印的日志的类名
%cyan 颜色
%msg 打印的日志
%n 换行

filter
LevelFilter 过滤appender 这个打印的日志级别
ThresholdFilter 只输出该级别以上的日志

logback-spring.xml配置案例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration debug="false" scan="true" scanPeriod="30 second">
<!-- 工程定义 -->
<property name="PROJECT_NAME" value="cashweb-start" />
<!-- 用来设置上下文名称,每个logger都关联到logger上下文,默认上下文名称为default -->
<contextName>${PROJECT_NAME}</contextName>
<!-- 定义日志文件 输入位置 -->
<property name="LOG_HOME" value="logs/${PROJECT_NAME}/" />
<!-- 活动文件的大小,默认值是10MB -->
<property name="FILE_SIZE" value="50MB" />
<!-- 日志最大的历史 100天,自动去除旧的日志文件 -->
<property name="MAX_HISTORY" value="100" />
<!-- 日期格式 -->
<property name="DATETIME" value="yyyy-MM-dd HH:mm:ss" />
<!-- 控制台打印 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- 对日志进行格式化 -->
<encoder charset="utf-8">
<pattern>[%-5level] %d{${DATETIME}} [%thread] [%X{traceLogId}] %logger{36} - %m%n</pattern>
</encoder>
</appender>
<!-- ERROR 输入到文件,按日期和文件大小 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--格式化输出:
%d表示日期
%thread表示线程名
%-5level:级别从左显示5个字符宽度
%m日志消息
%n是换行符
%logger{36}表示logger名字最长36个字符,否则按照句点分割
-->
<encoder charset="utf-8">
<pattern>[%-5level] %d{${DATETIME}} [%thread] [%X{traceLogId}] %logger{36} - %m%n</pattern>
</encoder>
<!-- 过滤器,只记录指定level级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤掉非INFO级别 -->
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}%d/error.%i.log</fileNamePattern>
<maxHistory>${MAX_HISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${FILE_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- WARN 输入到文件,按日期和文件大小 -->
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder charset="utf-8">
<pattern>[%-5level] %d{${DATETIME}} [%thread] [%X{traceLogId}] %logger{36} - %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}%d/warn.%i.log</fileNamePattern>
<maxHistory>${MAX_HISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${FILE_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- INFO 输入到文件,按日期和文件大小 -->
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder charset="utf-8">
<pattern>[%-5level] %d{${DATETIME}} [%thread] [%X{traceLogId}] %logger{36} - %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}%d/info.%i.log</fileNamePattern>
<maxHistory>${MAX_HISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${FILE_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- DEBUG 输入到文件,按日期和文件大小 -->
<appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder charset="utf-8">
<pattern>[%-5level] %d{${DATETIME}} [%thread] [%X{traceLogId}] %logger{36} - %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}%d/debug.%i.log</fileNamePattern>
<maxHistory>${MAX_HISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${FILE_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- TRACE 输入到文件,按日期和文件大小 -->
<appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder charset="utf-8">
<pattern>[%-5level] %d{${DATETIME}} [%thread] [%X{traceLogId}] %logger{36} - %m%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}%d/trace.%i.log</fileNamePattern>
<maxHistory>${MAX_HISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${FILE_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!--
logger将控制'name'包下的所有类的日志的打印
name:类名或包名,标志该 logger 与哪个包或哪个类绑定
level:若没有设置打印级别,则继承他的上级<root>的日志级别,默认'DEBUG;
additivity:默认为true,将此loger的打印信息向上级传递
-->
<logger name="org.apache.ibatis" additivity="false" />
<logger name="com.asiainfo.account.service.dao" />
<!-- 屏蔽ctg-cache日志 -->
<logger level="warn" name="com.ctg.itrdc.cache"/>
<!-- 屏蔽RocketMQ日志-->
<logger level="warn" name="RocketmqClient"/>
<!-- 屏蔽Kafka日志收集信息-->
<logger level="info" name="org.apache.kafka.clients"/>
<!-- 屏蔽zookeeper心跳
-->
<logger level="info" name="org.apache.zookeeper.ClientCnxn"/>
<!-- 屏蔽dubbo心跳日志
-->
<logger level="info" name="org.apache.dubbo.remoting.exchange.support.header"/>
<!-- 屏蔽dubbo反序列化
-->
<logger level="info" name="org.apache.dubbo.remoting.transport.DecodeHandler"/>
<!-- 屏蔽hikari数据源连接池管理日志
-->
<logger level="info" name="com.zaxxer.hikari.pool"/>
<!-- 屏蔽druid日志 -->
<logger level="info" name="com.alibaba.druid"/>
<!-- 屏蔽spring数据源jdbc日志
-->
<logger level="info" name="org.springframework.jdbc"/>
<!-- 屏蔽mybatis事务管理-->
<logger level="info" name="org.mybatis.spring.transaction.SpringManagedTransaction"/>
<!-- 屏蔽mybatis会话管理工具-->
<logger level="info" name="org.mybatis.spring.SqlSessionUtils"/>
<!-- 屏蔽nacos日志变更日志
-->
<logger level="info" name="com.asiainfo.platform.task.config.NacosLoggingListener"/>
<!-- 屏蔽http相关-->
<logger level="info" name="sun.net.www.protocol.http"/>
<!-- 屏蔽shiro相关-->
<logger level="info" name="org.apache.shiro"/>
<!-- 屏蔽tomcat会话相关-->
<logger level="info" name="org.apache.catalina.session"/>
<!-- 屏蔽netty通信日志 -->
<logger level="info" name="io.netty.channel.nio.NioEventLoop"/>
<!-- 屏蔽tomcatEndpoint日志-->
<logger level="info" name="org.apache.tomcat.util.net.NioEndpoint"/>
<!-- 日志输出级别
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,默认是DEBUG
-->
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="DEBUG" />
<appender-ref ref="ERROR" />
<appender-ref ref="WARN" />
<appender-ref ref="INFO" />
<appender-ref ref="TRACE" />
</root>
</configuration>

最后

以上就是搞怪翅膀为你收集整理的logback日志配置的全部内容,希望文章能够帮你解决logback日志配置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部