loback的介绍与配置-(通俗易通)
一.logback的配置介绍
Logback的配置分为三个内容:Logger、appender及layout
Logger:作为日志的记录器,主要用于存放日志对象,也可以定义日志类型、级别。
appender:主要用于指定日志输出的目的地。目的地可以是控制台、文件、远程套接字服务器、 MySQL、PostreSQL、 Oracle和其他数据库、 JMS和远程UNIX Syslog守护进程等。
Layout:负责把事件转换成字符串,格式化日志信息的输出.
二.Logger context的介绍
各个logger都会被关联到一个LoggerContext上,LoggerContext负责制造logger,也负责以树结构排列各logger.所有的logger都是通过org.slf4j.LoggerFactory类的静态方法getLogger取得。
private Logger logger = LoggerFactory.getLogger(Example.class);
三.Logger级别的打印与规则设置
日志级别分为:
TRACE(跟踪) < DEBUG < INFO < WARN < ERROR 如果Logger没有被分配级别,那么它将继承root的默认级别:DEBUG
打印方法决定记录请求的级别。例如,如果 L 是一个 logger 实例,那么,语句 L.info("..")是一条级别为 INFO的记录语句。记录请求的级别在高于或等于其 logger 的有效级别时被称为被启用,否则,称为被禁用。
记录请求级别为 p,其 logger的有效级别为 q,只有则当 p>=q时,该请求才会被执行。
该规则是 logback 的核心。级别排序为: TRACE < DEBUG < INFO < WARN < ERROR
四.Logback的默认配置
当Logback启动后,会在classpath下查找文件logback-test.xml,如果文件不存在会查找logback.xml文件,如果这2个文件都不存在,logback用BasicConfigUrator自动对自己进行配置,这样会导致记录输出到控制台上。
五.logback.xml常用配置详解
1.根节点<configuration>的配置
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!--其他配置省略-->
</configuration>
scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
2.子节点<contextName>
作用:用来设置上下文名称,每个logger都关联到logger上下文,默认上下文名称为default。但可以使用<contextName>设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>myAppName</contextName>
<!--其他配置省略-->
</configuration>
3.子节点<property>
作用:用来定义变量值,它有两个属性name和value,通过<property>定义的值会被插入到logger上下文中,可以使”${}”来使用变量。
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="APP_Name" value="myAppName" />
name: 变量的名称
value: 的值时变量定义的值
<contextName>${APP_Name}</contextName>
<!--其他配置省略-->
</configuration>
4.子节点<timestamp>
作用:获取时间戳字符串,他有两个属性key和datePattern
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>
key: 标识此<timestamp> 的名字;
datePattern: 设置将当前时间(解析配置文件的时间)转换为字符串的模式,遵循java.txt.SimpleDateFormat的格式。
<contextName>${bySecond}</contextName>
<!-- 其他配置省略-->
</configuration>
5.子节点<appender>
作用:负责写日志的组件,它有两个必要属性name和class。name指定appender名称,class指定appender的全限定名,name的不同,也决定了这个appender的作用不同
5.1当class为:ConsoleAppender时,表示要将日志打印到控制台,有以下属性
<encoder>:对日志进行格式化
<target>:字符串System.out(默认)或者System.err(区别不多说了)
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender> <root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration> 此配置表示: 把 >= DEBUG 级别的日志都输出到控制台上
5.2 当class为FileAppender时:表示把日志添加到文件中。有以下属性
<file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。
<append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
<encoder>:对记录事件进行格式化.负责两件事,一是把日志信息转换成字节数组,二是把字节数组写入到输出流。
<prudent>:如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。(如果设置成了true其它的FileAppender也可以向该文件中写,就是速度慢)
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>testFile.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="FILE" />
</root>
</configuration>
上述配置表示: 把>=DEBUG级别的日志都输出到testFile.log
5.3当class为RollingFileAppender:表示滚动记录文件,先将日志记录到指定的文件上,当符合某个条件时,会将日志记录到其它文件上。有以下属性:
<file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。
<append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
<rollingPolicy>:当发生滚动时,会根据class定义的滚动策略来决定RollingFileAppender的行为,可能是文件移动和重命名。
在这里请注意:FollingFileAppender下的rollingPolicy策略有4种,这里只介绍一种最常用的SizeAndTimeBasedRollingPolicy
当rollingPolicy的class为SizeAndTimeBasedRollingPolicy:表示按照文件的大小和日期生成日志文件
<fileNamePattern>:生成文件的名字
<maxFileSize> :生成文件的大小
<maxHistory> :保存日志文件的日期,以天为单位
<totalSizeCap> :保存日志的最大容量
注意:在配置<fileNamePattern>时,按日期格式化的配置 .%d{yyyy-MM-dd}.%i 是不能更改的,否则会失效
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="LOG_HOME" value="D:\logs" />
<!-- 滚动记录文件 -->
<appender name="metrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}\metrics.log</file>
<append>true</append>
<!-- 每天创建1个日志 文件,当超过1MB时创建新的文件-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" >
<fileNamePattern>${LOG_HOME}\metrics.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 注意标红这里是不能更改的,必须包含的元素 -->
<maxFileSize>1MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n|==|%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<logger name="metrics.zpb" level="info" additivity="false">
<appender-ref ref="metrics"/>
</logger>
<root level="INFO">
<appender-ref ref="metrics"/>
</root>
</configuration>
6.子节点<loger>
作用:用来设置打印哪一个包下的日志或者某一具体类的日志,以及打印的级别,以及指定<appender>
<loger>仅有一个name属性,一个可选的level和一个可选的addtivity属性
name: 用来指定受此loger约束的某一包或者具体的某一个类
Level: 用来设置打印级别,大小写无关,:trace < debug <info < warn < error < all < off
还有一特定值,INHERITED或同义词NULL,代表强制执行上级的级别,如果未设置些属性,那么当前logger将会继承上级的级别
addtivity: 是否向上级loger传递打印信息。默认是true,同<logger>一样,可以包含零个或多个
<appender-ref>元素,标识这个appender将会添加到这个loger
7.子节点<root>
作用:根节点,其实它也是一个loger,只不过是loger的顶级,只有一个level属性
level: 用来设置打印级别,大小无关,trace < debug <info < warn < error < all < off
不能设置为INHERITED或者同义词NULL,默认是DEBUG
六.logback所需jar包
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>
七.自定义输出格式
%m 输出代码中指定的消息 %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL %r 输出自应用启动到输出该log信息耗费的毫秒数 %c 输出所属的类目,通常就是所在类的全名 %t 输出产生该日志事件的线程名 %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 %L 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
八.示例
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- 输出到控制台上 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss}| %-5level|%c %L|%m%n</pattern>
</encoder>
</appender>
<logger name="com.zpb.metrics" level="debug" additivity="false">
<appender-ref ref="STDOUT"/>
</logger>
<!-- 输出到文件上 -->
<appender name="metrics" class="ch.qos.logback.core.FileAppender">
<File>D:\logs\metrics.log</File>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss}| %-5level|%c|%m %n</pattern>
</encoder>
</appender>
<!-- logger 中的配置的解释:
name: 从指定的包路径下接收日志
level: 设置日志接收的级别
additivity:表示此logger信息不再向上级传递
-->
<logger name="com.metrics.zpb" level="info" additivity="false">
<appender-ref ref="metrics"/>
</logger> <root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="metrics"/>
</root>
</configuration> 此配置表示:将不同级别的日志分别输出到控制台和日志文件中
loback的介绍与配置-(通俗易通)的更多相关文章
- 分布式Web服务器架构(通俗易通)
最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网 ...
- OSPF协议介绍及配置 (上)
OSPF协议介绍及配置 (上) 一.OSPF概述 回顾一下距离矢量路由协议的工作原理:运行距离矢量路由协议的路由器周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加 ...
- 易通电脑锁2007V6.3.3.3无法卸载问题解决办法
易通电脑锁2007V6.3.3.3无法卸载问题解决办法把原版文件拷贝回去.bat@echo offcolor 2Fecho 该批处理会把易通电脑锁2007版原文件拷贝回去,解决易通电脑锁卸载时出现的运 ...
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...
- python学习第二讲,pythonIDE介绍以及配置使用
目录 python学习第二讲,pythonIDE介绍以及配置使用 一丶集成开发环境IDE简介,以及配置 1.简介 2.PyCharm 介绍 3.pycharm 的安装 二丶IDE 开发Python,以 ...
- x-pack 功能介绍及配置传输层安全性(TLS / SSL)
x-pack 功能介绍及配置传输层安全性(TLS / SSL) 学习了:https://blog.csdn.net/wfs1994/article/details/80411047
- 陈立伟 - MultiCharts快易通(2013年8月2日)
<MultiCharts快易通> 作 者:陈立伟 译 者: 系 列:寰宇程式交易312--挑战程式交易系列1 出 版:寰宇出版股份有限公司 字 数:千字 阅读完成:2013年8月2日
- mysql多实例介绍及配置
mysql多实例介绍及配置 1.mysql多实例介绍 1.1 什么是mysql多实例 mysql多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过 ...
- 13.LAMP架构介绍及配置
LAMP架构介绍及配置 LAMP简介与概述 LAMP概述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境. LAMP是一 ...
随机推荐
- 025_自动为其他脚本添加解释器信息#!/bin/bash
#!/bin/bash#先使用 grep 判断对象脚本是否已经有解释器信息,如果没有则使用 sed 添加解释器以及描述信息if ! grep -q "^#!" $1; then # ...
- centos安装JDK、Tomcat、mysql
1.下载 jdk-8u131-linux-x64.tar.gz 下载地址: https://pan.baidu.com/s/1o8LW9eE 密码: miva 2.下载 apache-tomcat-8 ...
- CTS2019自闭记
没想到吧,我竟然还有一篇游记. Day 0 上午开开心心地考完了中考英语听说考试,然后就出发去机场了. 第一次一个人坐飞机还有点小激动? 7点左右到的北京,到酒店就已经9点了,赶紧跟着hz学长学了一下 ...
- 内存管理1 retain & release
内存管理法则 1:谁创建谁释放alloc /new/ copy------>release/autorelease.一一对应,不是你创建的就不用你释放. 2:除了alloc /new/ copy ...
- 进入docker 容器命令行
#!/bin/bash CNAME=$1 CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME) nsenter --tar ...
- Jmeter linux 运行
一.在Linux服务器先安装sdk 1.先从客户端下载jdk1.8.0_144.tar.gz,再上传到服务器 2.解压:tar -xzf jdk1.8.0_144.tar.gz,生成文件夹 jdk1. ...
- elasticsearch中文分词器(ik)配置
elasticsearch默认的分词:http://localhost:9200/userinfo/_analyze?analyzer=standard&pretty=true&tex ...
- PyTricks-json dumps优雅的输出字典
import json my_mapping = {'a': 23, 'b': 42, 'c': 0xc0ffee} print(json.dumps(my_mapping, indent=4, so ...
- Springboot使用zuul进行负载均衡
完整项目代码地址参考:https://github.com/SimonHu1993/SpringbootZuul 1.这里我们使用Eureka来作为服务的注册与发现中心,首先看看Eureka clie ...
- 如何卸载oracle11g
方法/步骤 .关闭oracle所有的服务.可以在windows的服务管理器中关闭: 打开注册表:regedit 打开路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentCo ...