Logback介绍

Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。

Logback的优点

  1. 执行速度快,初始化内存加载小;
  2. 原生实现了 SLF4J API,不需要进行转换;
  3. 配置简单,并可以适应多种环境;
  4. 可以定时的删除过期日志;
  5. 更为强大的过滤器,不必因更改日志级别而产生大量的日志;
  6. 可以从 IO 错误中进行恢复;
  7. ....

    关于logback的优点还有很多,这里我就不一一列举了。详细的可以查看官方的Api文档。

    地址:https://logback.qos.ch/documentation.html

Logback的配置说明

关于这块的配置说明,我就简单的列举一些比较常用配置来进行说明。如果还想了解更多,请看官方的文档说明。

Logback的层级说明

简单的层级结构,实际有更多,仅供参考。

configuration
root
logger
property
appender
layout
rollingPolicy
Pattern
fileNamePattern
maxFileSize
maxHistory
totalSizeCap

具体说明

configuration 根节点, 一般有三个属性,分别是scan、scanPeriod和debug。

  • scan:是否自动加载,默认为true。
  • scanPeriod:监听修改时间间隔,默认一分钟。
  • debug: 是否查看logback运行状态,默认true。

那么我们要使用这个的话,可以进行如下配置:

<configuration  scan="true" scanPeriod="30 seconds" debug="true">
...
</configuration>

root 和logger 子节点,用于指定输入的日志级别。

  • root :这个是指定主日志的级别。
  • logger :这个是指定自定义日志的级别。

说明:root 指定的日志级别就是用类进行输出的日志,例如:

  private static Logger LOG = LoggerFactory.getLogger(logbackTest.class);

logger 指定的日志级别是自定义的级别,例如:

private static Logger LOG2 = LoggerFactory.getLogger("oneInfo");

他们的用法如下:

<logger name="oneInfo" level="DEBUG" additivity="false">
<appender-ref ref="ONE_INFO" />
</logger>
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE" />
</root>

说明二: level 是日志输出的级别,additivity表示是否在控制台打印该日志。

property 子节点,一般用来定义变量值。有两个属性name和value。类似Java中Map的key和value。

  • name: 变量的名称
  • value: 变量的值

用法如下:

<property name="LOG_HOME" value="logs/pcm"/>

说明:value指定的文件路径,会在项目同级目录下自动生成,无需手动创建。

appender 子节点,负责写日志的组件。有两个属性,name和class。

  • name: 自定义名称。
  • class:对应自定义名称的全限定名,就是使用何种方式进行日志的输出。

这个非常重要,也可以说是logback的核心吧。简单的用法如下:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
</appender>

说明:定义一个STDOUT名称,在控制台进行输出。

layout和Pattern 这两个一般是一起使用的。

  • layout:格式化日志信息;
  • Pattern :layout 子节点,定义输出信息的格式;

简单的用法如下:

<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n
</Pattern>
</layout>

说明:Pattern里面格式的%d表示输出的时间格式,%thread 表示输出的线程名称,%-5level 表示字符宽度,%msg 表示输出的信息,%n表示换行。

rollingPolicy、fileNamePattern、maxFileSize、 maxHistory和totalSizeCap 这些一般用于对日志进行滚动,也就是日志切割管理之类的。

  • rollingPolicy: 决定日志滚动行为,一般用于日志切割。
  • fileNamePattern:必要的节点,一般用于指定日志的文件的路径以及生成格式。
  • maxFileSize:单个日志文件最大值,达到之后就进行切割。
  • maxHistory:日志文件最多保留的天数,也就是过期时间。
  • totalSizeCap : 日志文件总体的最大值,达到之后就不再产生日志。

简单的用法如下:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>31</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
</appender>

说明:这段的配置意义是,每天产生一个日志文件,如果超出了10M,日志就进行切割,并且在日志文件名称上加一,日志文件最多保持31天,日志文件总共最大为10G。

Logback使用说明

在对logback日志的配置文件进行了简单的说明之后,那我们来简单的使用logback吧。

logback.xml 使用需要依赖三个 jar 包,分别是 slf4j-api,logback-core,logback-classic。

mavan配置如下:

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency> <dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency> <dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>

成功在maven添加依赖包之后,我们写个简单的demo来测试下吧。

定义三个log日志,一个主log,两个自定义log。

整体配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds" debug="true">
<property name="LOG_HOME" value="logs/pcm"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n
</Pattern>
</layout>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>31</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n
</Pattern>
</layout>
</appender> <appender name="ONE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOG_HOME}/oneInfo/%d{yyyy-MM-dd}/oneInfo.%i.txt</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>31</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n
</Pattern>
</layout>
</appender> <appender name="TWO_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOG_HOME}/twoInfo/%d{yyyy-MM-dd}/twoInfo.%i.txt</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>31</maxHistory>
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n
</Pattern>
</layout>
</appender> <logger name="oneInfo" level="DEBUG" additivity="false">
<appender-ref ref="ONE_INFO" />
</logger>
<logger name="twoInfo" level="WARN" additivity="true">
<appender-ref ref="TWO_INFO" />
</logger> <root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE" />
</root> </configuration>

然后分别在控制台输出和文件中进行输出。

该java的代码示例如下:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory; /**
*
* Title: logbackTest
* Description:
* logback日志测试
* Version:1.0.0
* @author pancm
* @date 2018年1月24日
*/
public class logbackTest {
private static Logger LOG = LoggerFactory.getLogger(logbackTest.class);
private static Logger LOG2 = LoggerFactory.getLogger("oneInfo");
private static Logger LOG3 = LoggerFactory.getLogger("twoInfo"); public static void main(String[] args) {
test();
} private static void test(){ LOG.debug("主程序的debug");
LOG.info("主程序的info");
LOG.warn("主程序的warn");
LOG.error("主程序的error"); LOG2.debug("oneInfo的debug");
LOG2.info("oneInfo的info");
LOG2.warn("oneInfo的warn");
LOG2.error("oneInfo的error"); LOG3.debug("twoInfo的debug");
LOG3.info("twoInfo的info");
LOG3.warn("twoInfo的warn");
LOG3.error("twoInfo的error");
}

输出结果如下:

日志的生成目录:

输出结果的说明:

  • LOG: 因为设置打印的级别是info,所以debug级别的不会打印 。
  • LOG2: 因为自定义配置设定的是 additivity="false" 不在控制台打印。 所以一条都不会打印,但是debug级别以上的日志可以在logs/pcm/oneInfo中查看。
  • LOG3: 因为自定义配置设定的是 additivity="true" 可以在控制台打印。所以会打印两条warn级别的日志,日志也可以在logs/pcm/oneInfo中查看。

其它

参考:

https://logback.qos.ch/documentation.html

https://www.cnblogs.com/warking/p/5710303.html

到此,本文的logback日志简单讲解结束,谢谢阅读!

Logback日志配置的简单使用的更多相关文章

  1. logback日志配置

    第一步:加入jar包.要加入slf4j和logback的jar包,slf4j需要的jar包为slf4j-api,logback需要2个jar包(logback-classic.logback-core ...

  2. Spring Boot Logback日志配置

    logback的使用: Logback的默认配置 如果配置文件 logback-test.xml 和 logback.xml 都不存在,那么 logback 默认地会调用BasicConfigurat ...

  3. SpringBoot整合+logback日志配置

    本次演示的代码结构如下,基于maven,整合SpringBoot.Spring.Mybaits的SSM框架.同时测试logback日志框架的使用及配置. 1.创建maven工程,修改pom.xml文件 ...

  4. SpringBoot Logback日志配置

    Logback的配置介绍: 1.Logger.appender及layout Logger作为日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型.级别. ...

  5. springboot学习笔记:4.logback日志配置

    springboot中日志组件推荐使用logback: 由于springboot内置了logback,所以可以直接在application.properties中配置:如果要功能丰富些,则配置下log ...

  6. SpringBoot Logback 日志配置

    目录 前言 日志格式 日志输出 日志轮替 日志级别 日志分组 小结 前言 之前使用 SpringBoot 的时候,总是习惯于将日志框架切换为 Log4j2,可能是觉得比较靠谱,也可能年龄大了比较排斥新 ...

  7. logback日志框架的简单使用

    1.首先在maven中增加依赖 <dependency> <groupId>ch.qos.logback</groupId> <artifactId>l ...

  8. python - django (logging 日志配置和简单使用)

    1. settings 配置 # 配置日志 LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 's ...

  9. Logback日志基础配置以及自定义配置

    Logback日志基础配置 logback日志配置有很多介绍,但是有几个非常基础的,容易忽略的.下面是最简单的一个配置,注意加粗的描述 <?xml version="1.0" ...

随机推荐

  1. FPGA 设计总结(1)

    1. set_input_delay和set_output_delay的选项-max和-min的理解 首先 input/output其实是模拟数据在端口外的延时,是一个外部约束条件,目的是为了约束FP ...

  2. jamup与gb2i组合

    软件一定要开嗓单效果器,最好不要关闭中断软件/声音,每次有重新检测电流必须会有嗓音,最好用ipad ,不然会烦死人.默认delay太长,在DLY面板修改 gb2i 效果还行,他的价值重在使用,让新人使 ...

  3. libcurl的使用

    http://blog.csdn.net/ixiaochouyu/article/details/47998267

  4. Linux程序包管理rpm与yum

    Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...

  5. Swift语言中与C/C++和Java不同的语法(三)

    这一部分的主要内容是Swift中的Collections 我们知道Java中的Collection基本上是每一个Java程序猿接触到的第一个重要的知识点. 在Swift中也不例外,Swift中的Col ...

  6. Tableau的简单数据可视化操作

    本文将讲解Tableau的基本使用和简单的数据分析. 在Tableau首页,我们可以看到有多种连接方式:文本文件.Excel.JSON文件.数据库等. 1.连接文本文件 点击"连接" ...

  7. CSS样式表学习

    ---恢复内容开始--- 今天学习的主要内容是样式表和选择器. 1.样式表的分类 1.内联式样式表 特点:能实现精确控制,但是范围太小.页面显示的优先级高于其他样式表 2.内嵌式样式表 特点:必须在h ...

  8. 对RC4算法进行改写,新的加密算法RCX。

    最近研究JWT算法, JWT由header.payload.signature三个部分组成,payload是非加密的,一些敏感信息能被别人非法获得,必要时候要加密. 加密算法中,RC4算法的速度可以达 ...

  9. 数据结构之二叉树(BinaryTree)

    导读 二叉树是一种很常见的数据结构,但要注意的是,二叉树并不是树的特殊情况,二叉树与树是两种不一样的数据结构. 目录 一. 二叉树的定义 二.二叉树为何不是特殊的树 三.二叉树的五种基本形态 四.二叉 ...

  10. Spring mvc之 发邮件(qq.163...)

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...