分别是代码配置,XML形式的配置文件,Groovy形式的配置文件
http://logback.qos.ch/translator/
<configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration>
1.5、打印Logback运行中的内部状态信息
默认情况下,在Logback运行过程中,如果内部碰到Warning和Error状态,那么相应的内部状态信息会被打印出来;否则,不会有任何内部状态信息被打印出来。public static void main(String[] args) { // assume SLF4J is bound to logback in the current environment LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); // print logback's internal status StatusPrinter.print(lc); }2)XML形式配置文件中的<configuration>标签的debug属性值设为true
<configuration debug="true"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoders are by default assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder --> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration>3)通过“logback.statusListenerClass”系统变量
java -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener
二、XML形式配置文件语法
Logback中XML形式配置文件的语法非常灵活,因而不能用DTD文件或者XML模式文件来进行可使用标签的定义。如图1
图1
additivity:可选的,表示是否继承祖先或者父亲Logger实例绑定的Appender,可选值集合为true,false
<logger>标签允许0到多个<appender-ref>子标签,<appender-ref>子标签用来配置父<logger>标签表示的Logger实例所绑定的Appender,<appender-ref>子标签只有一个"ref"属性,"ref"属性的值为欲绑定Appender实例的名称。
<appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionS ource"> <driverClass>com.mysql.jdbc.Driver</driverClass> <url>jdbc:mysql://127.0.0.1:3306/dslztx?useUnicode=true&characterEncoding=gbk</url> <user>dsl</user> <password>dsl</password> </connectionSource> </appender>
2.3.1、<layout>标签
配置<layout>标签相当于配置Layout实例,<layout>标签允许的属性有:<layout>标签允许的子标签有:任意的相应于特定Layout类型的属性的标签
Layout被用来格式化LoggingEvent实例,Layout格式化LoggingEvent实例得到一个String<layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </layout>
2.3.2、<encoder>标签
配置<encoder>标签相当于配置Encoder实例,<encoder>标签允许的属性有:<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder>备注:PatternLayoutEncoder其实继承Encoder接口,内部包含一个对PatternLayout实例的引用,而PatternLayoutEncoder中配置的pattern属性其实最终是被PatternLayout使用,因此PatternLayout和PatternLayoutEncoder中的pattern属性配置语法一致,关于pattern属性的配置语法见" Conversion Word"
经过实验,pattern属性值设置为如下值:“%-5level %logger %C %M %d{MM/dd-HH:mm:ss.SSS} [%thread] - %msg%n”比较好。
%logger表示Logger实例的名称,开发者在类中定义Logger实例,当使用该类的全限定名称作为Logger实例的名称时,Logger实例的名称可以被用来追溯Logger实例定义所在类;否则,Logger实例的名称不可以被用来追溯Logger实例定义所在类
%M表示产生本条日志记录请求的方法所在
%C表示产生本条日志记录请求的方法所在的类
2.3.3、<filter>标签
配置<filter>标签相当于配置Filter实例,<filter>标签允许的属性有:Filter被用来根据设置的一些条件来过滤日志记录请求
Logback中的Filter介绍,见文章《Java日志框架——Logback的Filter》
现在我们可以设置项目A下的Logback的Context Name为"A Context Name",B下的Logback的Context Name为"B Context Name",接着设置A和B下的Logback在记录日志的时候包含Context Name这个字段(通过"%contextName"指示符实现),这样在最终获得的日志记录中就可以通过Context Name这个字段来判定该条日志记录是来自A还是B下的Logback。
<property name="USER_HOME" value="/home/dsl" />ii、外部文件
USER_HOME=/home/dslLogback配置文件配置片段如下:
<property file="/home/dsl/variables.properties" />iii、外部资源
USER_HOME=/home/dslLogback配置文件配置片段如下:
<property resource="resource.properties" />3)使用变量
2.4.3、其他
另外还有“支持条件语句”,“从JNDI获取变量”,“配置文件导入”,“配置Context Listener”等高级内容