SpringBoot日志配置--logback

      Spring Boot默认用Logback来记录日志,并用INFO级别输出到控制台。因为spring-boot-starter其中包含了 spring-boot-starter-logging,所以springboot项目不用再添加依赖,直接使用。

日志级别从低到高分为:TRACE < DEBUG < INFO < WARN < ERROR < FATAL   如果设置为 WARN ,则低于 WARN 的信息都不会输出。

    如果日志配置的比较简单,可以直接在application.properties文件中配置即可。

   logging.file ,设置文件,可以是绝对路径,也可以是相对路径。如: logging.file=spring.log

   logging.path ,设置目录,会在该目录下创建 spring.log 文件,并写入日志内容,如: logging.path=/java/springbootTest/test2

二者不能同时使用,如若同时使用,则只有 logging.file 生效

默认情况下,日志文件的大小达到 10MB 时会切分一次,产生新的日志文件,默认级别为: ERROR、WARN、INFO 所有支持的日志记录系统都可以在 Spring 环境中设置记录级别(例如在 application.properties 中)

格式为: 'logging.level.* = LEVEL'

logging.level :日志级别控制前缀,*为包名或Logger名

LEVEL :选项 TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF

 logging.level.jit.wxs=DEBUG:jit.wxs 包下所有 class 以 DEBUG 级别输出

 logging.level.root=WARN:root 日志以 WARN 级别输出

logging.level.root=info
#logging.file.path=/java/springbootTest/test2
#test2是springbootTest项目下的 一个module
logging.file.name=test2/spring.log
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss:SS} [%thread] %-5level %logger- %msg%n
logging.pattern.file=%d{yyyy/MM/dd-HH:mm:ss:SS} [%thread] %-5level %logger- %msg%n

   %d{HH: mm:ss.SSS}——日志输出时间

   %thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用

   %-5level——日志级别,并且使用5个字符靠左对齐

   %logger{36}——日志输出者的名字

   %msg——日志消息

   %n——平台的换行符

建一个Controller直接使用

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
 * @author Administrator
 * @description
 * @date 2019/12/30
 */
@RestController
public class UserController {
   
    private static final Logger logger = LoggerFactory.getLogger(UserController.class);
   
    @RequestMapping(value = "/logback",method = RequestMethod.GET)
    public String logbackTest(){

        logger.trace("trace");
        logger.info("info");
        logger.debug("debug");
        logger.warn("warn");
        logger.error("error");

        return "logback";
    }
}

高级配置需要配置文件

根据不同的日志系统,按照如下组织配置文件名,就能够正确的加载外部配置文件:

    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

SpringBoot官方优先推荐使用带有-spring结尾的文件作为日志配置,SpringBoot 会对以 -spring 结尾的日志配置添加一些 SpringBoot 所特有的配置项。这些配置文件默认放在 src/main/resources 下即可 。如果你想自定义存放路径和配置文件名,可以通过设置 logging.config 属性即可:例如自定义文件名logback.xml

logging.config=classpath:logback.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!--日志文件名-->
    <contextName>logback</contextName>
    <!--日志文件路径-->
    <property name="log.path" value="G:\\java\\springbootTest\\log"></property>
    <!--0. 日志格式和颜色渲染 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>info</level>
        </filter>
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!--输出到文件-->
    <appender name="debug_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件-->
        <file>${log.path}/logback_debug.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss} %contextName [%thread] %-5level %logger{36}- %msg%n</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/logback_debug.%d{yyyy-mm-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 日志级别过滤器 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!--            过滤级别-->
            <level>debug</level>
            <!--            匹配时接收-->
            <onMatch>ACCEPT</onMatch>
            <!--            不匹配时拒绝-->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="info_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件-->
        <file>${log.path}/logback_info.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss} %contextName [%thread] %-5level %logger{36}- %msg%n</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/logback_info.%d{yyyy-mm-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <appender name="warn_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件-->
        <file>${log.path}/logback_warn.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss} %contextName [%thread] %-5level %logger{36}- %msg%n</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/logback_warn.%d{yyyy-mm-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <appender name="error_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件-->
        <file>${log.path}/logback_error.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss} %contextName [%thread] %-5level %logger{36}- %msg%n</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/logback_error.%d{yyyy-mm-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!--    &lt;!&ndash;日志级别&ndash;&gt;
        <root level="info">
            <appender-ref ref="console"></appender-ref>
            <appender-ref ref="debug_file"></appender-ref>
        </root>
        &lt;!&ndash;logback在java中的包&ndash;&gt;
        <logger name="com.springboot.controller"></logger>
        &lt;!&ndash;类的全路径&ndash;&gt;
        <logger name="com.springboot.controller.UserController" level="info" additivity="false">
            <appender-ref ref="console"></appender-ref>
            <appender-ref ref="debug_file"></appender-ref>
        </logger>-->
    <!-- 4. 最终的策略 -->
    <!-- 4.1 开发环境:打印控制台-->
    <springProfile name="dev">
        <logger name="com.springboot.controller" level="debug"/>
    </springProfile>

    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="debug_file" />
        <appender-ref ref="info_file" />
        <appender-ref ref="error_file" />
        <appender-ref ref="warn_file" />
    </root>

    <!-- 4.2 生产环境:输出到文档-->
    <!--    <springProfile name="pro">-->
    <!--        <root level="info">-->
    <!--            <appender-ref ref="console" />-->
    <!--            <appender-ref ref="debug_file" />-->
    <!--            <appender-ref ref="info_file" />-->
    <!--            <appender-ref ref="error_file" />-->
    <!--            <appender-ref ref="warn_file" />-->
    <!--        </root>-->
    <!--    </springProfile>-->
</configuration>

根节点<configuration>包含的属性:

        scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。

        scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。

       debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

根节点<configuration>的子节点:<configuration>下面一共有2个属性,3个子节点,分别是:

       设置上下文名称<contextName>

        每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用<contextName>设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改,可以通过%contextName来打印日志上下文名称。

 <contextName>logback</contextName>

      设置变量<property>

      用来定义变量值的标签,<property> 有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。通过<property>定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。

 <property name="log.path" value="G:\\java\\springbootTest\\log"></property>

    子节点一<appender>

     appender用来格式化日志输出节点,有俩个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。

    控制台输出ConsoleAppender

     <encoder>表示对日志进行编码

     ThresholdFilter为系统定义的拦截器,例如我们用ThresholdFilter来过滤掉ERROR级别以下的日志不输出。

        输出到文件RollingFileAppender

       另一种常见的日志输出到文件,随着应用的运行时间越来越长,日志也会增长的越来越多,将他们输出到同一个文件并非一个好办法。RollingFileAppender用于切分文件日志

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/logback_debug.%d{yyyy-mm-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>

        其中重要的是rollingPolicy的定义,<fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern>定义了日志的切分方式——把每一天的日志归档到一个文件中,<maxHistory>30</maxHistory>表示只保留最近15天的日志,以防止日志填满整个磁盘空间。同理,可以使用%d{yyyy-MM-dd_HH-mm}来定义精确到分的日志切分方式。<totalSizeCap>100MB</totalSizeCap>用来指定日志文件的上限大小,例如设置为100MB的话,那么到了这个值,就会删除旧的日志。

         子节点二<root>

          root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。

          level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL,默认是DEBUG。

           <root>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个loger。

           子节点三<loger>

           <loger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。<loger>仅有一个name属性,一个可选的level和一个可选的addtivity属性。

           name:用来指定受此loger约束的某一个包或者具体的某一个类。

          level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前loger将会继承上级的级别。

          addtivity:是否向上级loger传递打印信息。默认是true。

好的,我可以为您提供springboot配置logback-spring.xml文件的大全。以下是相关内容: 1. logback.xml 的基本配置: <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="30 seconds" debug="true"> </configuration> 2. 设置日志级别: <!-- 定义日志级别 --> <root level="INFO"> <!-- 定义 Appender --> </root> 3. 使用 RollingFileAppender: <!-- 输出日志到文件的 Appender --> <appender name="rollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/log/app.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/log/app.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <maxFileSize>20MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>100GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern> <charset>utf8</charset> </encoder> </appender> 4. 使用 ConsoleAppender: <!-- 定义输出到控制台的 Appender --> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>utf8</charset> </encoder> </appender> 5. 过滤某些级别日志: <!-- 过滤不需要的日志级别 --> <appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <encoder> <pattern>%d %-5level %logger{35} - %msg%n</pattern> </encoder> </appender> 以上是关于springboot配置logback-spring.xml文件的大全,希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值