以下内容为个人理解及使用总结,希望能帮助到你
Logback 配置理解:
Logback使用主要依赖于Logger、Appender 和 Layout 这三个类之上。
Logger:记录日志是使用,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。
Appender:用于指定日志输出的目的地,目的地可以是控制台、文件、数据库等。
Layout:负责把事件转换成字符串,格式化的日志信息的输出。
1、关于配置文件使用顺序:
logback 首先在项目根目录查找 logback.groovy,如果没有则使用logback-test.xml,如果没有logback-test.xml,使用 logback.xml 如果以上三个都没有则输出到控制台。(我是用的是logback[-test].xml)
2、根节点 configuration:
configuration 有三个可选属性:
a、scan属性:用来设置配置文件变动时是否重新加载,值是 true\false ,默认是true即配置变动时重新加载
b、scanPeriod属性:用来设置每隔多久检查一次配置是否变动,默认是1分钟,默认单位是毫秒
c、debug属性:用来设置是否将logback内部的日志打印出来,即启动时输出配置加载信息。值为true\false 默认为false
3、property 节点:
设置要使用的或者共用的变量,property包含两个属性name和value;其中name的值是变量的名称,value的值是变量所代表的值。<property>定义的值可以使用“${变量名}”到logger上下文中。例如:
<!--定义log日志输出文件的目录--> <property name="outFilePath" value="E:/个人/demo/logs/demo.log" /> <!--定义日志输出格式--> <property name="enPattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" /> <appender name="STDOUT" class="ch.qos.logback.core.FileAppender"> <file>${outFilePath}</file> <append>true</append> <encoder charset="UTF-8"> <pattern>${enPattern}</pattern> </encoder> </appender>
上述例子中Property定义的outFilePath、enPattern在appender节点中的file节点中使用。这样写方便统一调整日志输出的目录。
4、appender节点可以有多个,分别针对不同的包或者类做不同的输出,如果appender输出到文件时,可以设置append子节点值true\false,是末尾追加日志还是替换日志,值为true时表示追加。
可以在appender中使用filter节点(过滤器),在此节点内过滤日志级别(使用level节点指定),过滤后会返回一个枚举值,即DENY,NEUTRAL,ACCEPT其中之一:
A、返回DENY,日志将立即被抛弃不再经过其他过滤器;
B、返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;
C、返回ACCEPT,日志会被立即处理,不再经过剩余过滤器
如果需要使用这些值做处理时,需要使用onMatch(level级别或大于level级别的)和onMismatch(级别小于level级别的)
5、logger节点:
用来设置某一个包或者具体的某一个类的日志打印级别、以及指定appender。logger仅有一个name属性和两个可选的level、 addtivity属性。
Name属性:用来指定受此logger约束的某一个包或者具体的某一个类。
Level属性:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR
如果未设置此属性,那么当前logger将会继承上级的级别。
Addtivity属性:用来设置是否向上级logger传递打印信息。默认是true。
logger可以包含零个或多个appender-ref元素,标识这个appender将会添加到这个logger
6、root节点:
也是<loger>元素,但是它是根loger。只有一个level属性,应为已经被命名为"root".
Level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR。默认是DEBUG。
root可以包含零个或多个appender-ref元素,标识这个appender将会添加到这个loger
7、pattern节点定义的输出模式解释:
%d{HH:mm:ss.SSS} 当前时间;
[%thread] [当前线程名称]
%-5level logger级别
%logger{36} logger名称
-%msg%n 定义的输出
%line 输出日志的行号
%n 换行
%date和%d{yyyy-MM-dd HH:mm:ss.SSS} 当前时间包含年月日
{%C.java:%L} 输出日志所在的java类、所在行及路径可以替换[%thread]
官方参考:http://logback.qos.ch/manual/index.html