日志框架整理--logback

本文详细介绍了logback框架,包括其核心模块、配置文件查找顺序和自定义配置。logback经典模块logback-classic实现了SLF4J API,方便与其他日志系统互换。配置文件的默认名称为logback.xml,可通过logging.config属性指定自定义配置。配置内容涉及scan、debug、logger、root、appender等元素,以及多种日志输出策略,如ConsoleAppender、FileAppender和RollingFileAppender。文章还讨论了过滤器和日志级别控制,提供了丰富的配置示例。
摘要由CSDN通过智能技术生成

logback是有log4j 创始人设计的又一个开源日志框架
logback 当前分为三个模块:logbakc-core,logback-classic 和 logback-access

  • logback-core:是其他两个模块的基础模块
  • logback-classic:是log4j的一个改良版本。此外logback-classic 完整实现SLF4J API,所以可以很方便的更换成其他日志系统,如 log4j 或 JDK14 Logging
  • logback-access:访问模块与Servlet容器基础,提供通过http访问日志的功能。

maven:

<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>

logback, 一个“通用,可靠,快速又灵活的Java日志框架”

在src目录下建立logback.xml
logback查找顺序:

  1. 首先会试着查找logback.groovy文件
  2. 当没有找到时,继续试着查找 logback-test.xml 文件
  3. 当没有找到时,继续试着查找 logback.xml 文件
  4. 如果仍然没有找到,则使用默认配置(打印到控制台)

自定义日志配置

根据不同的日志系统,可以按照如下规则组织配置文件名,就可以被正确加载:
Logback:logback-spring.xml,logback-spring.groovy,logback.xml,logback.groovy
Log4j: log4J-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
Log4j2: log4j2-spring.xml, log4j2.xml
JDK(Java Util Logging): logging.properties

Spring Boot 官方推荐优先使用带有-spring的文件名作为你的日志配置(如使用logback-spring.xml,而不是logback.xml), 命名为logback-spring.xml 的日志配置文件,spring boot 可以为它添加一些spring boot特有的配置项。
默认的命名规则,并且放在 src/main/resources 下面即可

如果你不想用 logback.xml 作为 logback 配置的名字,application.yml 可以通过 logging.config 属性指定自定义的名字:
logging.config=classpath:logging-config.xml
虽然一般并不需要改变配置文件的名字,但是如果你想针对不同运行是profile使用不同的配置,这个功能会很有用。
一般不需要这个属性,而是直接在 logback-spring.xml 中使用 springProfile配置,不需要logging.config 指定不同环境使用不同配置文件。

上代码:

package logback;  
  
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");  
           
        String name = "Aub";  
        String message = "3Q";  
        String[] fruits = { "apple", "banana" };  
          
        // logback提供的可以使用变量的打印方式,结果为"Hello,Aub!"  
        log.info("Hello,{}!", name);  
          
        // 可以有多个参数,结果为“Hello,Aub! 3Q!”  
        log.info("Hello,{}!   {}!", name, message);  
          
        // 可以传入一个数组,结果为"Fruit:  apple,banana"  
        log.info("Fruit:  {},{}", fruits);   
    }  
}  

configuration

  1. 根节点 configuration 包含的属性:
  • scan:
    此属性设置为true,配置文件如果发生改变,将会被重新加载,默认为true
  • scanPeriod:
    设置监测配置文件是否有修改的时间间隔,如果没有给出事件单位,默认单位是毫秒。当scan为true时,此属性默认生效。默认的时间将为1分钟。
  • debug:
    此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认为false。
    例如:
<configuration scan="true" scanPeriod="60 seconds" debug="false">  
      <!-- 其他配置省略-->  
</configuration>  
  1. 根节点 configuration 的子节点:
  • contextName
    每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。可以通过%contextName来打印日志上下文名称,一般来说我们不用这个属性,可有可无.
    例如:
<configuration scan="true" scanPeriod="60 seconds" debug="false">
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨愁心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值