写一个自己的logback.xml文件
logback介绍:
由slf4j创始人设计的开源日志组件,性能比slf4j更好;分为三个模块(都可以在网上下载)------
(1)logback-core(logback的核心基础,以它为基础可以构建其他自己的模块)
(2)logback-access(可以和tomcat等servlet容器集成,提供日志的HTTP界面
化访问功能)
(3)logback-classic(是slf4j的改进版,完整实现了slf4j API,使logback可以轻松在各个日志框架之间来回转换,无需变动源码);
成功搭建logback,logback.xml文件是重要的一步,src目录下必须有logback.xml。
· logbacak.xml ------ logback的核心配置文件,负责控制logback日志系统的所有特性。
logback.xml文件主要三部分:
· Loggers(日志记录器,把日志关联到指定context上,也可以指定日志级别)
· Appenders(输出目的地,指定日志输出目的地,包括,控制台、文件、数据库等等)
· Layouts(输出日志格式,把事件转换成字符串,格式化日志信息输出,从0.9.19开始逐渐被代替)
从logback0.9.17开始,标签不区分大小写,但是以什么形式开头,就要以什么形式关闭。
编写logback.xml文件,不外乎分清各个标签的作用和意思,基础标签如下
【本篇jar版本是1.2.3,slf4j是1.7.26,版本不同时,logback.xml配置稍有不同需要注意】:
1、 <configuration> 配置文件的最基本标签,了解就好(包含0个或多个<appender>、<logger>,最多一个<root>)
内置三个属性
· scan(默认true,配置文件发生修改后,自动重新加载
· scanPeriod(建立在scan属性ture前提下,设置重新加载的时间间隔,默认60s)
· debug(默认false,打印logback内部日志信息,实时查看logback运行状态);
1.1 <logger> 具体规定某个包/类的打印级别,以及指定<appender> 【可选】
1.1.1 属性:
· name --- 指定受规定的包/类路径
· level --- 受限制的级别
· addtivity --- 是否向上级logger传递打印信息,默认True
1.1.2 <appender-ref ref= "CONSOLE/FILE"> 指定appender输出,多地使用该标签会导致日志重复记录
2、<appender> 控制logback的输出位置和格式【两个输出位置:控制台 / 指定文件】
<appender name="CONSOLE" class="ch.qos.logback.coore.ConsoleAppender"> 指定输出位置为控制台的固定格式
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 指定文件的固定格式
· class="logback的jar包内提供该操作的类"
【对于输出指定在控制台的配置标签】
2.1 <target> 控制输出的模式
一般两种 System.out / System.err 以输出 / 错误(就是红色字体)的形式打印
2.2 <encoder> 内置作用:把日志信息转换成字节数组,再把字节数组写入输出流,pattern是其子标签
2.2.1 <pattern> 指定每条日志信息的输出格式举例: %d{yyyy-MM-dd HH:mm} [%-5level] %c [%thread] : %msg %n ,格式自定义,更多要求可上网查找对应参数
解释:(1)%d 表示日期格式,{}内设置日期格式,默认是yyyy-MM-dd(2)%-5level 表示日志级别
(3)%c 即%class,表示日志信息产生的类 | %logger{n} 也表示产生的类,当可以根据n略输出类的全名(n表示字符数)
(4)%thread 表示该日志程序的线程名/方法名
(5)%msg 日志具体信息内容
(6)%n 换行符
<!-- 指定输出到控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<target>System.out</target>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>
%d{yyyy-MM-dd HH:mm} [%-5level] %c [%thread] : %msg %n
</pattern>
</encoder>
</appender>
【对于输出指定在文件中的配置标签】
2.4 <charset> 指定文件的编码,一般是utf-8 【encoder的子标签】
2.5 <file> 指定存放日志的文件路径
2.6 <rollingPolicy> 指定日志的拆分和压缩规则属性 class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" | "滚动策略",一定要写
1.6.1 <MaxFileSize> 设定文件最大值(日志内容达到最大值就会开始拆分)
1.6.2 <fileNamePattern> 拆分文件的具体格式和路径
· %i 表示拆分的次数,从0开始
<!-- 指定输出到文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<charset>UTF-8</charset>
<pattern>
%d{yyyy-MM-dd HH:mm} [%-5level] %logger{5} [%thread] == %msg %n
</pattern>
</encoder>
<!-- 指定输出路径,要先创建好该路径 -->
<file>D:/homework/curricular/Logback-input/LogbackRecord.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--设置日志文件最大内存,达最大值开始拆分-->
<maxFileSize>50KB</maxFileSize>
<!-- 拆分文件的路径+命名格式-->
<fileNamePattern>
D:/homework/curricular/Logback-input/LogbackRecord%d{yyyyMMdd-HHmm }%i.tar
</fileNamePattern>
</rollingPolicy>
</appender
3、<root> 控制基础日志输出级别的标签【即使配置了appender,不配置root使配置和对应目的地关联,依旧不会有日志输出到对应位置】
<root level="日志级别"> 控制日志打印
【扩展——日志级别(对应Logger对象的方法):ERROR>WARN>INFO>DEBUG>TRACE(大小写都可以),不规定级别时,默认级别是debug;
全局控制级别:ALL和OFF ,输出所有或一条都不输出
作用:控制日志信息的输出,只有大于或等于设定的级别的日志信息】
3.1 <appender-ref ref="CONSOLE / FILE" /> 设置关联的位置,只有加了该标签,才会在对应位置按照root设定等级进行信息输出
<!--默认debug-->
<root level="">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
【以上,完整的基础logback.xml文件】
· 更多注意事项
二、配置效果
· 创建Logback对象
· 默认level=debug,所以不会输出5555
· 查看文件路径下【已测试多次,生成压缩文件】