SLF4J 之logback.xml配置文件实例及其说明

本文介绍了Java后端程序员如何使用SLF4J的logback进行高效日志记录。包括logback的基本配置、不同类型的Appender使用方法及示例,如ConsoleAppender、FileAppender、RollingFileAppender等。

对于java后端程序员来说,如何记录日志是一个小话题,只要在网上随便找一个log4j的简单说明,就可以用了。但是,要真正了解日志记录的技术细节,还是需要花点时间研究一下。这里推荐使用SLF4J的logback来记录日志,虽说和log4j区别不大,但其模板打印方式很贴心:

logger.debug("现在要打印第一个数据:{} ,和第二个数据{}",object1,object2);

以下是一个logback.xml配置实例。本文主要参考了aubdiy的文章:

http://aub.iteye.com/blog/1103685

在此表示感谢!

首先,在工程中引入如下包:

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

然后在类中引用logger:

	private Logger logger = LoggerFactory.getLogger(this.getClass());

最后,在工程的classpath下,放入logback.xml配置文件。文件中包含的节点的含义和用法,均有详细说明:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true" scanPeriod="60 seconds">
    
    <!-- 关于logback的更多介绍,请参考原创文章: http://aub.iteye.com/blog/1103685  -->
    
    <!-- 
    	appender简介:
    		具体描述如何来写日志的节点。最常用的有三类:ConsoleAppender、FileAppender、RollingFileAppender
    	appender属性详解:
    		name属性:自定义名称。 
    		class属性:指定类名。
    	appender子节点详解:
    		encoder子节点:将日志信息输出的节点,其内部的pattern子节点指定输出格式。
    -->

    <!-- 
    	ConsoleAppender简介:无特殊特性
    -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">  
        <encoder>  
            <charset>UTF-8</charset>  
            <pattern>[%d{MM-dd HH:mm:ss}][%p][%logger{0}:%line] - %m%n</pattern>  
        </encoder>  
    </appender>
    
    <!-- 
    	FileAppender简介:
    		把日志添加到文件。
    	FileAppender特殊子节点详解:
    		file子节点:日志文件名,相对路径绝对路径均可,如果上级目录不存在会自动创建,没有默认值。 
    		append子节点:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
    -->
	<appender name="logFile" class="ch.qos.logback.core.FileAppender">   
		<file>logFile.log</file>
		<append>true</append>  
		<encoder>   
			<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>   
		</encoder>   
	</appender>   

    <!-- 
    	RollingFileAppender简介:
    		先将日志记录到指定文件,当符合某个条件时,将日志数据迁移到其他文件。
    	RollingFileAppender特殊子节点详解:
    		triggeringPolicy子节点:定义日志滚动的触发条件。一般为时间触发或文件大小触发。
    		rollingPolicy子节点:当触发条件满足时,决定如何滚动。涉及文件移动和重命名。
    -->
	<appender name="rollingFileBaseTime" class="ch.qos.logback.core.rolling.RollingFileAppender">   
		<file>rollingFileBaseTime.log</file>  
		<append>true</append>  
		   
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">   
			<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>   
			<maxHistory>30</maxHistory>    
		</rollingPolicy>   
		
		<encoder>   
			<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>   
		</encoder>   
	</appender>   

	<appender name="rollingFileBaseSize" class="ch.qos.logback.core.rolling.RollingFileAppender">   
		<file>rollingFileBaseSize.log</file>  
		<append>true</append>  
		   
		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">   
			<fileNamePattern>logFile.%i.log</fileNamePattern>   
			<minIndex>1</minIndex>   
			<maxIndex>3</maxIndex>   
		</rollingPolicy>   
		
		<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">   
			<maxFileSize>5MB</maxFileSize>   
		</triggeringPolicy>   
		
		<encoder>   
			<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>   
		</encoder>   
	</appender>   


    <!-- 
    	logger简介:
    		用来设置某个包或类的打印级别和appender。
    	logger属性详解:
    		name属性:用来指定受此logger约束的某一个包或者具体的某一个类。 
    		level属性:设置打印级别,默认继承上级的级别。
    		addtivity属性:是否向上级loger传递打印信息,默认是true。
    	logger子节点详解:
    		appender-ref子节点:可以包含多个,用于引用appender节点
    -->
    <logger level="info" name="com.xxx.xxx">  
        <appender-ref ref="stdout" />  
    </logger>  
    
    <!-- 
    	root简介:
    		也是一个logger节点,但它是根logger节点,只有一个level属性
    	root属性详解:
    		level属性:设置打印级别,默认继承上级的级别。
    	root子节点详解:
    		appender-ref子节点:可以包含多个,用于引用appender节点
    -->
    <root level="info">  
        <appender-ref ref="stdout" />  
    </root>  

</configuration>

最后,贴出 aubdiy 在文章  http://aub.iteye.com/blog/1103685 中,关于 pattern 的说明:

转载于:https://my.oschina.net/yxzkm/blog/1070067

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值