logback日志配置

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>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值