【工具】logback 配置使用

内容概要

旨在用于spring boot生态圈,可直接使用的 日志记录配置。

环境jar包

		jdk: jdk1.8.0_121(32位)
		pom:
			 <dependency>
			     <groupId>ch.qos.logback</groupId>
			     <artifactId>logback-classic</artifactId>
			     <version>1.2.3</version>
			</dependency>
			<dependency>
			     <groupId>ch.qos.logback</groupId>
			     <artifactId>logback-core</artifactId>
			     <version>1.2.3</version>
			</dependency>
			
	 	下方集合包内 包含以上两个包。不用重复导入:
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency> 

配置方法

系统启动时会按如下顺序加载配置,且加载到配置后不再向下执行。

1、java -Dlogback.configurationFile=/log/conf/logback.xml RunApplication ,执行RunApplication 类的时候就会加载/log/conf/logback.xml
2、在application.properties 配置日志 logging.config =classpath: logback.xml
3、在classpath下加载logback.groovy文件
4、在classpath下加载 logback-RunApplication.xml 文件
5、在classpath下加载 logback.xml 文件
6、jdk1.8 会直接调用ServiceLoader,使用com.qos.logback.classic.spi.Configurator接口的第一个实现类,使用ch.qos.logback.classic.BasicConfigurator,在控制台下输出日志。

logback的xml配置格式

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<!-- 日志地址-->
	<property name="log_home" value="logs" />

	<!-- 控制台输出 -->
	<appender name="sys_stdout" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>
	
	<!-- 系统info日志输出 -->
	<appender name="sys_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log_home}/info.log</file>
		<filter class="系统.filter.NormalLoggerFilter"></filter>
		<!--滚动机制  日志保存-->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 每天生成一份日志 -->
			<fileNamePattern>${log_home}/info/info-%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 最多保留45天 -->
			<maxHistory>45</maxHistory>
		</rollingPolicy>
		<encoder> <!--日志输出格式-->
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>
	<!-- 系统error日志输出 -->
	<appender name="sys_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log_home}/error.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 每天生成一份日志 -->
			<fileNamePattern>${log_home}/error/error-%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 最多保留45天 -->
			<maxHistory>45</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
		            <level>ERROR</level>
		            <onMatch>ACCEPT</onMatch>
		            <onMismatch>DENY</onMismatch>
		</filter>
	</appender>
	<!-- 系统task计划日志输出 -->
	<appender name="sys-task" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log_home}/task.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 每天生成一份日志 -->
			<fileNamePattern>${log_home}/task/task-%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 最多保留2天 -->
			<maxHistory>2</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>
	<!-- 报文数据日志输出 -->
	<appender name="data" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log_home}/dataLog/data.log</file>
		<filter class="系统.filter.XMLDataFilter"></filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 每天单独生成一份日志 -->
			<fileNamePattern>${log_home}/dataLog/data-%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 最多保存 45天 -->
			<maxHistory>45</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>
	<!-- 系统接口日志保存 -->
	<appender name="interface" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log_home}/interfaceLog/interface.log</file>
		<filter class="系统.filter.InterfaceLoggerFilter"></filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 每天备份一份日志 -->
			<fileNamePattern>${log_home}/interfaceLog/interface-%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 只保存45天 -->
			<maxHistory>45</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>

	<root level="info"> <!--info级 将附加器添加  输出格式按各自自定义输出 -->
		<appender-ref ref="sys_stdout" />
		<appender-ref ref="sys_info" />
        <appender-ref ref="sys_error" />
        <appender-ref ref="interface" />
        <appender-ref ref="data" />
	</root>
	<!-- 计划任务日志    单独设置DEBUG 输出格式 自定义优先-->
	<logger name="系统.components.schedule.job" level="DEBUG">
         <appender-ref ref="sys-task" /> 
    </logger>
</configuration>

调用方法

import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  

//logback 内部实现了slf4j 可直接调用。
public class Test{
	private static Logger log = LoggerFactory.getLogger(Test.class);  
	
	public void A(){ 
        log.debug("======debug");  
        log.info("======info");  
        log.warn("======warn");  
        log.error("======error");  
        }
}

日志生成格式

文件夹 /log下
在这里插入图片描述
文件夹 logs/error下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值