Logback配置详解

这篇具有很好参考价值的文章主要介绍了Logback配置详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介:

logback是java的日志开源组件,是log4j创始人写的,性能比log4j要好,目前主要分为3个模块:

  • logback-core:核心代码模块
  • logback-classic:log4j的一个改良版本,同时实现了slf4j的接口,这样你如果之后要切换其他日志组件也是一件很容易的事
  • logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能

使用:

引入maven依赖

<!--这个依赖直接包含了 logback-core 以及 slf4j-api的依赖-->
<dependency>
     <groupId>ch.qos.logback</groupId>
     <artifactId>logback-classic</artifactId>
     <version>1.2.3</version>
</dependency>

输出日志

//这是slf4j的接口,由于我们引入了logback-classic依赖,所以底层实现是logback
private static final Logger LOGGER = LoggerFactory.getLogger(Test.class);
public static void main(String[] args) throws InterruptedException {
    LOGGER.info("hello world");
}

配置

配置获取顺序

logback在启动的时候,会按照下面的顺序加载配置文件:
1、如果java程序启动时指定了logback.configurationFile属性,就用该属性指定的配置文件。如java -Dlogback.configurationFile=/path/to/mylogback.xml Test ,这样执行Test类的时候就会加载/path/to/mylogback.xml配置
2、在classpath中查找 logback.groovy 文件
3、在classpath中查找 logback-test.xml 文件
4、在classpath中查找 logback.xml 文件
5、如果是 jdk6+,那么会调用ServiceLoader 查找 com.qos.logback.classic.spi.Configurator接口的第一个实现类
6、自动使用ch.qos.logback.classic.BasicConfigurator,在控制台输出日志
上面的顺序表示优先级,使用java -D配置的优先级最高,只要获取到配置后就不会再执行下面的流程。相关代码可以看ContextInitializer#autoConfig()方法。

SLF4j的日志输出级别

在slf4j中,从小到大的日志级别依旧是trace、debug、info、warn、error。
1、TRACE:很低的日志级别,一般不会使用
2、DEBUG:指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。
3、INFO:消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用,避免打印过多的日志。
4、WARN:表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示
5、ERROR:指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息,如果不想输出太多的日志,可以使用这个级别

logback.xml 配置样例

在项目 资源文件夹 resources 下 创建 logback-spring.xml 文件。logback 将会自动读取该配置文件文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true" scanPeriod="1 seconds">

    <contextName>logback</contextName>
    <!--定义参数,后面可以通过${app.name}使用-->
    <property name="app.name" value="logback_test"/>
    <!--ConsoleAppender 用于在屏幕上输出日志-->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!--定义了一个过滤器,在LEVEL之下的日志输出不会被打印出来-->
        <!--这里定义了DEBUG,也就是控制台不会输出比ERROR级别小的日志-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <!-- encoder 默认配置为PatternLayoutEncoder -->
        <!--定义控制台输出格式-->
        <encoder>
            <pattern>%d [%thread] %-5level %logger{36} [%file : %line] - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--定义日志输出的路径-->
        <!--这里的scheduler.manager.server.home 没有在上面的配置中设定,所以会使用java启动时配置的值-->
        <!--比如通过 java -Dscheduler.manager.server.home=/path/to XXXX 配置该属性-->
        <file>${scheduler.manager.server.home}/logs/${app.name}.log</file>
        <!--定义日志滚动的策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--定义文件滚动时的文件名的格式-->
            <fileNamePattern>${scheduler.manager.server.home}/logs/${app.name}.%d{yyyy-MM-dd.HH}.log.gz
            </fileNamePattern>
            <!--60天的时间周期,日志量最大20GB-->
            <maxHistory>60</maxHistory>
            <!-- 该属性在 1.1.6版本后 才开始支持-->
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!--每个日志文件最大100MB-->
            <maxFileSize>100MB</maxFileSize>
        </triggeringPolicy>
        <!--定义输出格式-->
        <encoder>
            <pattern>%d [%thread] %-5level %logger{36} [%file : %line] - %msg%n</pattern>
        </encoder>
    </appender>

    <!--root是默认的logger 这里设定输出级别是debug-->
    <root level="trace">
        <!--定义了两个appender,日志会通过往这两个appender里面写-->
        <appender-ref ref="stdout"/>
        <appender-ref ref="file"/>
    </root>

    <!--对于类路径以 com.example.logback 开头的Logger,输出级别设置为warn,并且只输出到控制台-->
    <!--这个logger没有指定appender,它会继承root节点中定义的那些appender-->
    <logger name="com.example.logback" level="warn"/>

    <!--通过 LoggerFactory.getLogger("mytest") 可以获取到这个logger-->
    <!--由于这个logger自动继承了root的appender,root中已经有stdout的appender了,自己这边又引入了stdout的appender-->
    <!--如果没有设置 additivity="false" ,就会导致一条日志在控制台输出两次的情况-->
    <!--additivity表示要不要使用rootLogger配置的appender进行输出-->
    <logger name="mytest" level="info" additivity="false">
        <appender-ref ref="stdout"/>
    </logger>

    <!--由于设置了 additivity="false" ,所以输出时不会使用rootLogger的appender-->
    <!--但是这个logger本身又没有配置appender,所以使用这个logger输出日志的话就不会输出到任何地方-->
    <logger name="mytest2" level="info" additivity="false"/>
</configuration>

配置详解

configuration节点的属性:

1、sacn
当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true
2、scanPeriod
设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟
3、debug
当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false

contextName节点

设置日志上下文名称,后面输出格式中可以通过定义 %contextName 来打印日志上下文名称

property节点

用来设置相关变量,通过key-value的方式配置,然后在后面的配置文件中通过 ${key}来访问

appender 节点

日志输出组件,主要负责日志的输出以及格式化日志。常用的属性有name和class
Logback配置详解

class:
1、ConsoleAppender:向控制台输出日志内容的组件,只要定义好encoder节点就可以使用。
2、FileAppender:向文件输出日志内容的组件,用法也很简单,不过由于没有日志滚动策略,一般很少使用
3、RollingFileAppender:向文件输出日志内容的组件,同时可以配置日志文件滚动策略,在日志达到一定条件后生成一个新的日志文件。
appender节点中有一个子节点filter,配置具体的过滤器,比如上面的例子配置了一个内置的过滤器ThresholdFilter,然后设置了level的值为DEBUG。这样用这个appender输出日志的时候都会经过这个过滤器,日志级别低于DEBUG的都不会输出来。
在RollingFileAppender中,可以配置相关的滚动策略,具体可以看配置样例的注释。

springboot如何整合logback

springBoot已经帮我们引入了,使用logback的相关 jar 包,所以我们不需要 再去引用
1、springboot的pom文件都会引一个parent

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>

2、点进去这个parent,会有一个这个dependency

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.0.0.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
</parent>

3、再点进去就是2.0版本,所谓的它给你集成的各种包依赖,而且规定了版本号,其中有一个包如下

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter</artifactId>
     <version>2.0.0.RELEASE</version>
</dependency>

4、再点进去

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    <version>2.0.0.RELEASE</version>
    <scope>compile</scope>
</dependency>

5、再点,这些都是原有的日志包,所以,不必再引依赖了,直接用就ok了,用法如下:文章来源地址https://www.toymoban.com/news/detail-431084.html

<dependencies>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-to-slf4j</artifactId>
        <version>2.11.1</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>1.7.25</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

到了这里,关于Logback配置详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Logback日志框架配置使用

    一、简述 Logback一个通用、快速而又灵活的Java日志框架。主要分为三个模块组成 logback-core: 其他两个模块的基础模块 logback-classic: 由log4j的改良版本,完整实现了slf4j的API,所以可以很方便的更换成其他日志系统如log4j或者JDK14 Logging logback-access:访问模块和Servlet容器集成提

    2024年02月11日
    浏览(36)
  • springboot中logback日志配置

    Spring Boot使用Apache的Commons Logging作为内部的日志框架,其仅仅是一个日志接口,在实际应用中需要为该接口来指定相应的日志实现。 Spring Boot从1.4版本开始内置的日志框架就是Logback;Spring Boot 2.x 默认采用了slf4j+logback的形式,slf4j也是个通用的日志门面。 SpringBoot可以适配所有

    2024年02月16日
    浏览(37)
  • SpringBoot整合Logback日志框架配置全解析

    SpringBoot使用 Commons Logging 进行所有内部日志的记录,但默认配置也提供了对常用日志的支持,如 Java Util Logging,Log4J2,和Logback. 每种logger都可以通过配置使用控制台或文件输出日志内容。 Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境

    2024年02月02日
    浏览(49)
  • SpringBoot多环境配置与添加logback日志

    一个项目会有多个运行环境 所以SpringBoot提供了可以适应多个环境的配置文件  每个文件对应一个端口号 application-dev.yml 开发环境 端口8090 application-test.yml 测试环境 端口8091 application-prod.yml 生产环境 端口8092 在application中选择使用哪个端口号 每个文件设置端口号: 2、添加lo

    2024年01月17日
    浏览(37)
  • logback配置xml日志文件(保姆级教程)

    这是个啥,这就是个控制日志输出格式、控制日志输出位置、控制日志输出环境、控制日志输出级别的玩意、控制忽略输出的日志就这些功能,没有什么很复杂的东西,废话不说多了。 configuration scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为

    2024年01月24日
    浏览(42)
  • Logback日志框架使用详解以及如何Springboot快速集成

      日志系统是用于记录程序的运行过程中产生的运行信息、异常信息等,一般有8个级别,从低到高为All Trace Debug Info Warn Error Fatal OFF off 最高等级,用于关闭所有日志记录 fatal 指出每个严重的错误事件将会导致应用程序的退出。 error 指出虽然发生错误事件,但仍然不影响系统

    2024年02月07日
    浏览(31)
  • SpringBoot项目从0到1配置logback日志打印

    大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 以下是正文! 我们在写后端项目的时候,日志打印是必需的。支持SpringBoot项目的日志框架一般有log4j、logback,

    2024年02月11日
    浏览(44)
  • springboot Logback 不同环境,配置不同的日志输出路径

    mac 笔记本开发,日志文件写到/data/logs/下,控制台报出:Failed to create parent directories for [/data/logs/........... 再去手动在命令窗口创建文件夹data,报Read-only file system resource 目录下的配置文件列表: 在logback-spring.xml添加配置, 只有local写到当前项目下的data目录,其他环境写到系统

    2024年04月23日
    浏览(33)
  • Spring Boot多环境配置及Logback日志记录

    Spring Boot多环境配置 logback日志记录器 Spring Boot的针对不同的环境创建不同的配置文件, 语法结构:application-{profile}.properties profile:代表的就是一套环境 application-dev.yml 开发环境 端口8090 application-test.yml 测试环境 端口8091 application-prod.yml 生产环境 端口8092 在application.yml 中激活

    2024年01月19日
    浏览(38)
  • springboot+mybatis 配置 logback 日志 并打印sql

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 springboot + logback 日志 提示:以下是本篇文章正文内容,下面案例可供参考 ` 使用时注意: 配置日志文件保存路径 默认用户目录 自定义指定需要打印日志的文件路径 参考连接: 很详细 是干货 SpringBoo

    2024年02月19日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包