zoukankan      html  css  js  c++  java
  • SpringBoot 日志框架

    默认的日志框架 logback

    SpringBoot使用Logback作为默认的日志框架。logback 是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。spring-boot-starter 其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。

    默认logback日志打印效果图

    从上图可以看到,日志输出内容元素如下

    • 时间日期 :精确到毫秒
    • 日志级别 :ERROR, WARN, INFO, DEBUG or TRACE
    • 进程ID
    • 分隔符 :--- 标识实际日志的开始
    • 线程名 :方括号括起来(可能会截断控制台输出
    • Logger名 :通常使用源代码的类名

    logback 基本配置

    Spting-Boot 默认集成的 logback 虽然打印些日志信息,但是不够友好。满足不了我们日常开发需求。因此,我们可以在根目录下创建 logback.xml 或 logback-spring.xml (建议命名)文件,进行自定义配置(In a Spring Boot application, you can specify a Logback XML configuration file as logback.xml or logback-spring.xml in the project classpath. The Spring Boot team however recommends using the -spring variant for your logging configuration, logback-spring.xml is preferred over logback.xml. If you use the standard logback.xml configuration, Spring Boot may not be able to completely control log initialization.)
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    
        <!-- 控制台输出  start -->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder charset="UTF-8">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
        <!-- 控制台输出  end -->
    
        <!-- 文件日志输出  start -->
        <appender name="INFO"
                  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>D://logs/demo_info.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>D://logs/demo_info.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
                <maxHistory>30</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy
                        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <MaxFileSize>50MB</MaxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
        <!-- 文件日志输出  end -->
    
        <!-- 异常日志输出  start -->
        <appender name="ERROR"
                  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>D://logs/demo_error.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>D://logs/demo_error.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
                <maxHistory>30</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy
                        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <MaxFileSize>50MB</MaxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} #### %msg%n</pattern>
            </encoder>
        </appender>
        <!-- 异常日志输出  end -->
    
        <!--打印info级别的日志,注意,additivity必须是false-->
        <logger name="monitorLog" level="info" additivity="false">
            <appender-ref ref="INFO" />
        </logger>
    
        <!--打印异常错误日志,注意,additivity必须是false-->
        <logger name="errorLog" level="error" additivity="false">
            <appender-ref ref="ERROR" />
        </logger>
    
        <!--还可以根据业务需要配置其他的logger-->
        <!--实际项目中我们通常将不同的日志打印到不同的日志文件中-->
    
        <root level="debug">
            <appender-ref ref="STDOUT" />
        </root>
    
    </configuration>

    日志级别

    默认情况下,Spring Boot 配置 ERROR, WARN, INFO 三种日志级别。如果需要 Debug 级别的日志。在 src/main/resources/application.properties 中配置数据源信息。

    debug=true

    此外,配置 logging.level.* 来具体输出哪些包的日志级别。

    logging.level.root=INFO
    logging.level.org.springframework.web=DEBUG

    日志文件

    默认情况下, Spring Boot 日志只会输出到控制台,并不会写入到日志文件,因此,对于正式环境的应用,我们需要通过在 application.properites 文件中配置 logging.file 文件名称和 logging.path 文件路径,将日志输出到日志文件中。

    logging.path = /var/tmp
    logging.file = xxx.log
    logging.level.root = info

    如果只配置 logging.path,在 /var/tmp文件夹生成一个日志文件为 spring.log。如果只配置 logging.file,会在项目的当前路径下生成一个 xxx.log 日志文件。

    值得注意的是,日志文件会在 10MB 大小的时候被截断,产生新的日志文件 

    常用的日志框架 log4j

     如果,我们希望使用 log4j 或者 log4j2,我们可以采用类似的方式将它们对应的依赖模块加到 Maven 依赖中。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j</artifactId>
    </dependency>

    或者

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>

    log4j 依赖模块加到 Maven 依赖中后,在 src/main/resources 目录下加入 log4j-spring.properties 配置文件。Spring Boot 官方推荐优先使用带有 –spring 的文件名作为你的日志配置, 例如 log4j-spring.properties,当然使用 log4j.properties 也是支持的。

  • 相关阅读:
    全新通用编程语言 Def 招募核心贡献者、文档作者、布道师 deflang.org
    全球最快的JS模板引擎:tppl
    4行代码实现js模板引擎
    [Node.js框架] 为什么要开发 Codekart 框架
    Android用BusyBox替换系统toolbox
    纪念一下,昨天换手机了
    在Android上使用gcc编译C/C++源程序
    关于BAPI_ACC_DOCUMENT_POST解读
    关于ABAP和JSON互相转换
    关于客户和供应商预制凭证添加WBS字段
  • 原文地址:https://www.cnblogs.com/winner-0715/p/10060196.html
Copyright © 2011-2022 走看看