logback配置详解
来源:互联网 发布:看篮球比赛的软件 编辑:程序博客网 时间:2024/06/07 09:38
logback配置文件查找顺序
logback首先会试着查找logback.groovy文件;
当没有找到时,继续试着查找logback-test.xml文件;
当没有找到时,继续试着查找logback.xml文件;
如果仍然没有找到,则使用默认配置(打印到控制台)。
根节点<configuration>
属性
- debug : 默认为false ,设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。
- scan : 配置文件如果发生改变,将会重新加载,默认值为true;
- scanPeriod : 检测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位时毫秒,当scan为true时,这个属性生效,默认时间间隔为1min。
<?xml version="1.0" encoding="utf-8"?><configuration debug="true" scan="true" scanPeriod="2"> <!--TODO : 子节点信息--></configuration>
logback.xml
可以这样描述配置文件的基本结构:
- 以
<configuration>
开头 - 后面有零个或多个
<appender>
元素 - 有零个或多个
<logger>
元素 - 有最多一个
<root>
元素
<configuration> <appender> ... <appender> <logger> ... <logger> <root></configuration>
<property>
可以用来设置变量,可以通过${name}
来访问,有以下的属性
name :用于
${name}
访问的keyvalue :用于
${name}
访问的valuefile :用于指定配置文件的路径,他的作用在于,如果你有多个配置信息的话,可以直接写在配置文件中,然后通过file引入;
<property file="src/main/java/chapters/configuration/variables.properties" />
variables.properties如下:
log.path=F:\\demolog.name=mylog.log
然后就直接通过
${log.path}
就可以访问其值resource :作用和file一样,但是,它是可以直接从classpath路径下引入配置文件
<property resource="resource.properties" />
<configuration>
子节点
<appender>
<logger>
<root>
<appender>
是负责写日志的组件
appender 有两个必要属性 name,class.
name 指定appender 的名称(自已命名)。
class 指定appender的全限定名
class 包括 :
ch.qos.logback.core.ConsoleAppender // 控制台输出日志ch.qos.logback.core.FileAppender // 文件输出日志ch.qos.logback.core.RollingFileAppender // 滚动文件输出日志
<?xml version="1.0" encoding="utf-8"?> <configuration debug="true" scan="true" scanPeriod="2"> <!-- 控制台输出日志 --> <appender name ="Console" class="ch.qos.logback.core.ConsoleAppender"> </appender> <!-- 文件输出日志 --> <appender name="File" class="ch.qos.logback.core.FileAppender"> </appender> <!-- 滚动文件输出日志 --> <appender name="RollingFile" class="ch.qos.logback.core.RollingFileAppender"> </appender> <loger></loger> <root></root></configuration>
ConsoleAppender
把日志添加到控制台,有如下节点:
<encoder>
: 对日志进行格式化。 <target>
: 字符串System.out 或者 System.err, 默认 System.out;
<?xml version="1.0" encoding="utf-8"?><configuration> <!-- 控制台输出日志 --> <appender name ="Console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%date [%thread] %-5level %logger - %message%newline</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="Console" /> </root> </configuration>
FileAppender
把日志添加到文件,有如下节点:
<file>
: 被写入的文件名,可以是相对目录 , 也可以是绝对目录 , 如果目录不存在
则会自动创建
<append>
: 如果是true , 日志被追加到文件结尾 , 如果是false,清空现存文件 , 默认是true
<encoder>
: 对日志进行格式化 [具体的转换符说明请参见官网.]
: 如果是true,日志会被安全的写入文件 , 即使其他的FileAppender也会向此文件做写入操作 , 默认是false
<?xml version="1.0" encoding="utf-8"?><configuration> <!-- 控制台输出日志 --> <appender name ="console_out" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%date [%thread] %-5level %logger - %message%newline</pattern> </encoder> </appender> <!-- 文件输出日志 --> <appender name="file_out" class="ch.qos.logback.core.FileAppender"> <file>logs/debug.log</file> <encoder> <pattern>%date [%thread] %-5level %logger - %message%newline</pattern> </encoder> </appender></configuration>
RollingFileAppender
滚动纪录文件,先将日志记录到指定文件,当符合某种条件时,将日志记录到其他文件,有如下节点:
<file>
: 被写入的文件名,可以是相对目录,也可以解决目录,如果目录不存在则自动创建。
<append>
: 如果是true,日志被追加到文件结尾,如果是false,清空现存文件,默认是true;
<encoder>
: 对日志进行格式化 [具体的转换符说明请参见官网.]
<rollingPolicy>
: 当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。
TimeBaseRollingPolicy :最常用的滚动策略,根据时间来制定滚动策略,即负责滚动也负责触发滚动。
有如下节点;
<fileNamePattern>
必要节点,包含文件及“%d” 转换符,“%d”可以包含一个java.text.SimpleDateFormat 制定的时间格式,如:%d{yyyy-MM},如果直接使用 %d ,默认格式是 yyyy-MM-dd。
RollingFileAppender 的file 子节点可有可无,通过设置file,可以为活动文件和归档文件制定不同位置,当前日志总是纪录到file指定的文件,活动文件的名称不会改变,如果没有设置file,活动文件的名称会根据fileNamePattern的值,每隔一段时间改变一次,“/”或者“\” 会被当作目录分隔符。
<maxHistory>
可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件,假设设置每个月滚动,且
<maxHistory>
是 6,则只保存最近6个月的文件,删除之前的旧文件。注意:删除旧文件是哪些为了归档而创建的目录也会被删除。
<filenamePattern>
必须包含“%i” 例如:设置最小值,和最大值分别为1和2,命名模式为 log%i.log,会产生归档文件log1.log和log2.log,还可以指定文件压缩选项,例如:log%i.log.gz 或者 log%i.log.zip
<triggeringPolicy>
告知RollingFileAppender,激活RollingFileAppender滚动。
<!-- 滚动文件输出配置 --><appender name="errorAppender" class="ch.qos.logback.core.RollingFileAppender"> <file>logs/error.log</file> <!-- 设置滚动策略 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--设置日志命名模式--> <fileNamePattern>errorFile.%d{yyyy-MM-dd}.log</fileNamePattern> <!--最多保留30天log--> <maxHistory>30</maxHistory> </rollingPolicy> <!-- 超过150MB时,触发滚动策略 --> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>150</maxFileSize> </triggeringPolicy> <!-- 日志内容格式 --> <encoder> <pattern>%d [%p] %-5level %logger - %msg%newline</pattern> </encoder></appender>
<logger>
节点
<logger>
是 <configuration>
的子节点
可选节点,用来设置具体指明包或类的日志输出级别,以及指定<appender>
,它将会覆盖root的输出级别
<logger>
仅有一个name属性,两个可选属性 level/addtivity
name : 用来指定受此loger约束的某一个包或者具体的某一个类
level:用来设置打印级别,大小写无关,TRACE,DEBUG,INFO,WARE,ERROR,ALL和OFF,还有一个特俗值INHERITED 或者 同义词NULL,代表强制执行上级的级别。
如果未设置此属性,那么当前logger将会继承上级的级别。
level 大小 :
ERROR > WARN > INFO > DEBUG > TRACE程序会打印高于或等于所设置级别的日志
addtivity : 是否向上级loger传递打印信息,默认为true;
<loger>
可以包含零个或多个<appender-ref>
元素,表示这个appender将会添加到loger。
<?xml version="1.0" encoding="utf-8"?><configuration> <!-- 控制台日志输出 --> <appender name ="Console" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!-- 过滤掉非INFO级别 --> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 滚动日志文件输出 --> <appender name="RolligFile" class="ch.qos.logback.core.RollingFileAppender"> <file>logs/info.log</file> <!-- 设置滚动策略 --> <rollingPoliy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--设置日志命名模式--> <fileNamePattern>infoFile.%d{yyyy-MM-dd}.log</fileNamePattern> <!--最多保留30天log--> <maxHistory>30</maxHistory> </rollingPoliy> <!-- 超过150MB时,触发滚动策略 --> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>150</maxFileSize> </triggeringPolicy> <encoder> <pattern>%d [%p] %-5level %logger - %msg%newline</pattern> </encoder> </appender> <!-- 指定输出logback.olf.log包中的log --> <logger name="logback.olf.log" level="info"> <appender-ref ref = "Console"/> <appender-ref ref = "RolligFile"/> </logger></configuration>
root 节点
元素配置根 logger。
该元素有一个 level 属性。没有 name 属性,因为已经被命名 为“root”
Level 属性的值大小写无关,其值为下面其中一个字符串:TRACE、DEBUG、INFO、 WARN、ERROR、ALL 和 OFF。注意不能设置为“INHERITED” 或“NULL”。
元素可以包含零个或多个元素。与元素类似,声明元素后,会先关闭然后移除全部当前 appender,只引用声明了的 appender。如果 root 元素没有引用任何 appender,就会失去所有 appender。
<?xml version="1.0" encoding="utf-8"?><configuration> <!-- 控制台输出日志 --> <appender name ="console_out" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!-- 过滤掉非INFO级别 --> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 01:infoAppender 配置 --> <appender name="infoAppender" class="ch.qos.logback.core.RollingFileAppender"> <file>logs/info.log</file> <!-- 设置滚动策略 --> <rollingPoliy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--设置日志命名模式--> <fileNamePattern>infoFile.%d{yyyy-MM-dd}.log</fileNamePattern> <!--最多保留30天log--> <maxHistory>30</maxHistory> </rollingPoliy> <!-- 超过150MB时,触发滚动策略 --> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>150</maxFileSize> </triggeringPolicy> <encoder> <pattern>%d [%p] %-5level %logger - %msg%newline</pattern> </encoder> </appender> <!-- 02:debugAppender 配置 --> <appender name="debugAppender" class="ch.qos.logback.core.RollingFileAppender"> <file>logs/debug.log</file> <!-- 设置滚动策略 --> <rollingPoliy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--设置日志命名模式--> <fileNamePattern>debugFile.%d{yyyy-MM-dd}.log</fileNamePattern> <!--最多保留30天log--> <maxHistory>30</maxHistory> </rollingPoliy> <!-- 超过150MB时,触发滚动策略 --> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>150</maxFileSize> </triggeringPolicy> <encoder> <pattern>%d [%p] %-5level %logger - %msg%newline</pattern> </encoder> </appender> <!-- 03:errorAppender 配置--> <appender name="errorAppender" class="ch.qos.logback.core.RollingFileAppender"> <file>logs/error.log</file> <!-- 设置滚动策略 --> <rollingPoliy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--设置日志命名模式--> <fileNamePattern>errorFile.%d{yyyy-MM-dd}.log</fileNamePattern> <!--最多保留30天log--> <maxHistory>30</maxHistory> </rollingPoliy> <!-- 超过150MB时,触发滚动策略 --> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>150</maxFileSize> </triggeringPolicy> <encoder> <pattern>%d [%p] %-5level %logger - %msg%newline</pattern> </encoder> </appender> <root level="ALL"> <appender-ref ref="infoAppender"/> <appender-ref ref="debugAppender"/> <appender-ref ref="errorAppender"/> </root></configuration>
测试代码
1.在工程src目录下建立logback.xml。
2.在工程src目录下建立com.jeiker.demo包,然后在包下建立LogbackDemo.java用于测试,代码如:
package com.jeiker.demo;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class LogbackDemo { private static Logger log = LoggerFactory.getLogger(LogbackDemo.class); public static void main(String[] args) { log.trace("======trace"); log.debug("======debug"); log.info("======info"); log.warn("======warn"); log.error("======error"); }}
- logback 配置详解
- logback配置详解1
- logback 常用配置详解
- logback 配置详解
- logback 常用配置详解
- logback配置详解
- logback 配置详解
- logback 配置详解
- logback配置详解
- Logback常用配置详解
- logback 配置详解
- logback 配置详解
- logback.xml配置详解
- logback 配置详解
- logback简单配置详解
- logback 配置详解
- logback配置详解
- logback配置详解
- 通过SDK提交MapReduce作业
- Xilinx SDK 初学之--API函数笔记(timer相关函数)
- 深入浅出MyBatis技术原理和实战(四)
- yii2项目实战-restful api之授权验证
- Java时间处理(...年前、...天前、...小时前)
- logback配置详解
- struts的那些事儿
- caffe中各个层解析
- Jersey用户指南(1)
- 文章标题
- 告别1人年,教你21天搭建推荐系统!
- Ubuntu中出现“E: Could not get lock”问题的解决
- MATLAB 三维画图
- 统计学基础一