zoukankan      html  css  js  c++  java
  • SpringBoot的logback日志

    1.项目结构

    2.在pom文件加入坐标依赖

    <!--添加日志依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </dependency>

    3.application.properties配置文件

    #设置端口号
    server.port=8081
    
    #配置项目的访问路径
    server.servlet.context-path=/qingfeng
    
    #设置日志的输出级别
    #debug=true
    
    #可以使用root级别和package级别来控制日志的输入级别
    #日志级别    root级别
    #logging.level.root=debug
    
    #日志级别   package级别    com.qingfeng是扫描这个包下的所有的,
    #设置日志输出的级别TRACE,DEBUG,INFO,WARN,ERROR,FATAL
    #logging.level.com.qingfeng=DEBUG
    
    
    # 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹;使用 spring.log 作为默认文件
    #logging.path=/spring/log
    
    # 不指定路径在当前项目下生成springboot.log日志
    #logging.file=springboot.log
    
    # 可以指定完整的路径;
    #logging.file=F:/springboot.log
    
    #  在控制台输出的日志的格式
    #logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
    
    # 指定文件中日志输出的格式
    #logging.pattern.file=%d{yyyy‐MM‐dd hh:mm:ss} === [%thread] === %‐5level === %logger{50} ==== %msg%n

    4.logback-spring.xml日志文件

    可以通过在类路径中包含适当的库来激活各种日志记录系统,并通过在类路径的根目录中或在Spring Environment属性 指定的位置中提供适当的配置文件来进一步进行自定义logging.config

    您可以通过org.springframework.boot.logging.LoggingSystemsystem属性强制Spring Boot使用特定的日志系统 。该值应该是实现的完全限定的类名LoggingSystem。您还可以通过使用值完全禁用Spring Boot的日志记录配置none

    [Note]

    由于日志记录是ApplicationContext创建之前初始化,因此无法从@PropertySourcesSpring @Configuration文件中控制日志记录系统属性和常规的Spring Boot外部配置文件都可以正常工作。)

    根据您的日志记录系统,将加载以下文件:

    Logging SystemCustomization

    Logback

    logback-spring.xmllogback-spring.groovylogback.xml or logback.groovy

    SpringBoot默认加载logback-spring.xmllogback-spring.groovylogback.xml或者logback.groovy

    Spring Boot包含许多Logback扩展,可以帮助进行高级配置。您可以在logback-spring.xml配置文件中使用这些扩展名

    [Note]

    您无法在标准logback.xml配置文件中使用扩展名,因为扩展名加载时间过早。您需要使用logback-spring.xml或定义一个 logging.config属性。

    <?xml version="1.0" encoding="UTF-8"?>
    <!--
    scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
    scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒当scan为true时,此属性生效。默认的时间间隔为1分钟。
    debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
    -->
    <configuration scan="false" scanPeriod="60 seconds" debug="false">
        <!-- 定义日志的根目录  #在当前项目的磁盘的根路径下创建app目录和app目录下log目录 -->
        <property name="LOG_HOME" value="/app/log" />
        <!-- 定义日志文件名称  日志的名字为value的值 -->
        <property name="appName" value="qingfeng-springboot"></property>
        <!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 -->
        <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
            <!--
            日志输出格式:
                %d表示日期时间,
                %thread表示线程名,
                %-5level:级别从左显示5个字符宽度
                %logger{50} 表示logger名字最长50个字符,否则按照句点分割。 
                %msg:日志消息,
                %n是换行符
            -->
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} == [%thread] %-5level %logger{50} - %msg%n</pattern>
            </layout>
        </appender>
    
        <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->  
        <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 指定日志文件的名称 -->
            <file>${LOG_HOME}/${appName}.log</file>
            <!--
            当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名
            TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。
            -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--
                滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动 
                %i:当文件大小超过maxFileSize时,按照i进行文件滚动
                -->
                <fileNamePattern>${LOG_HOME}/${appName}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
                <!-- 
                可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动,
                且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。注意,删除旧文件是,
                那些为了归档而创建的目录也会被删除。
                -->
                <MaxHistory>365</MaxHistory>
                <!-- 
                当日志文件超过maxFileSize指定的大小是,根据上面提到的%i进行日志文件滚动 注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy
                -->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <!-- 日志输出格式: -->     
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSSS}  [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
            </layout>
        </appender>
    
        <!-- 
        root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应,
        要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。 
        -->
        <!--  <root level="${logging.level.com.qingfeng}"> #日志级别   
        com.qingfeng是扫描这个包下的所有的,#设置日志输出的级别TRACE,DEBUG,INFO,WARN,ERROR,FATAL
            需要在application.properties配置文件中配置日志级别 logging.level.com.qingfeng=DEBUG
        -->
        <root level="info">
            <appender-ref ref="stdout" />
            <appender-ref ref="appLogAppender" />
        </root>
    </configuration> 
  • 相关阅读:
    图像检索(image retrieval)- 11
    图像检索(image retrieval)- 10相关
    Mock.js简易教程,脱离后端独立开发,实现增删改查功能
    Azure Monitor (3) 对虚拟机磁盘设置自定义监控
    Azure Monitor (1) 概述
    Azure SQL Managed Instance (2) 备份SQL MI
    Azure Virtual Network (17) Private Link演示
    Azure Virtual Network (16) Private Link
    Azure Virtual Network (15) Service Endpoint演示
    Azure Virtual Network (14) Service Endpoint服务终结点
  • 原文地址:https://www.cnblogs.com/Amywangqing/p/11945796.html
Copyright © 2011-2022 走看看