• springboot 默认日志配置


    springboot 默认日志配置

    https://segmentfault.com/a/1190000018071355?utm_source=tag-newest

    SpringBoot 日志配置 默认采用LogBack作为日志输出!

    日志格式化

    在这里插入图片描述

    具体输出的格式详解如下:

    2019-01-10 17:30:08.685 :日期精确到时间毫秒级别

    info是日志级别 : 可以设置为其他的级别如debug,error等

    9184 :进程id

    --- : 分割符

    main: 表示主线程

    com.xxxxx: 通常为源码类

    “:” 后即为详细的日志信息

    控制台输出级别

    在application.properties文件中配置

    如果你的终端支持ANSI,设置彩色输出会让日志更具可读性。通过在application.properties中设置spring.output.ansi.enabled参数来支持。

    • NEVER:禁用ANSI-colored输出(默认项)
    • DETECT:会检查终端是否支持ANSI,是的话就采用彩色输出(推荐项)
    • ALWAYS:总是使用ANSI-colored格式输出,若终端不支持的时候,会有很多干扰信息,不推荐使用
    #多彩输出
    spring.output.ansi.enabled=detect
    #日志级别
    logging.level.root=info
    #所有包下面都以debug级别输出
    logging.level.*=info
    

    默认输出格式

    在这里插入图片描述
    可以通过 logging.pattern.console = 进行配置

    文件输出

    springboot默认会将日志输出到控制台,线上查看日志时会很不方便,一般我们都是输出到文件。

    需要在application.properties配置

    #日志输出路径问价 优先输出 logging.file
    logging.file=C:/Users/tizzy/Desktop/img/my.log
    
    #设置目录,会在该目录下创建spring.log文件,并写入日志内容,
    logging.path=C:/Users/tizzy/Desktop/img/
    
    #日志大小 默认10MB会截断,重新输出到下一个文件中,默认级别为:ERROR、WARN、INFO
    logging.file.max-size=10MB

    在这里插入图片描述

    logging.file 和 logging.path 同时设置时候会优先使用logging.file 作为日志输出。

    自定义日志配置

    日志服务在ApplicationContext 创建之前就被初始化了,并不是采用Spring的配置文件进行控制。

    那我们来如何进行自定义配置日志呢。

    springboot为我们提供了一个规则,按照规则组织配置文件名,就可以被正确加载:

    • Logback:logback-spring.xmllogback-spring.groovylogback.xmllogback.groovy
    • Log4j:log4j-spring.propertieslog4j-spring.xmllog4j.propertieslog4j.xml
    • Log4j2:log4j2-spring.xmllog4j2.xml
    • JDK (Java Util Logging):logging.properties

    LogBack xml配置

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <!-- 控制台打印日志的相关配置 --> 
      <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
        <!-- 日志格式 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%level] - %m%n</pattern>
        </encoder>
        <!-- 日志级别过滤器 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
          <!-- 过滤的级别 -->
          <level>WARN</level>
          <!-- 匹配时的操作:接收(记录) -->
          <onMatch>ACCEPT</onMatch>
          <!-- 不匹配时的操作:拒绝(不记录) -->
          <onMismatch>DENY</onMismatch>
        </filter>
      </appender>
    
      <!-- 文件保存日志的相关配置 --> 
      <appender name="ERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <!-- 保存日志文件的路径 -->
        <file>/logs/error.log</file>
        <!-- 日志格式 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern>
        </encoder>
        <!-- 日志级别过滤器 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
          <!-- 过滤的级别 -->
          <level>ERROR</level>
          <!-- 匹配时的操作:接收(记录) -->
          <onMatch>ACCEPT</onMatch>
          <!-- 不匹配时的操作:拒绝(不记录) -->
          <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          <!-- 日志文件名格式 -->
          <fileNamePattern>error.%d{yyyy-MM-dd}.log</fileNamePattern>
          <!-- 最大保存时间:30天-->
          <maxHistory>30</maxHistory>
        </rollingPolicy>
      </appender>
    
      <!-- 基于dubug处理日志:具体控制台或者文件对日志级别的处理还要看所在appender配置的filter,如果没有配置filter,则使用root配置 -->
      <root level="debug">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="ERROR-OUT" />
      </root>
    </configuration>

    Log4j

    引如Log4j日志时候 需要 排除logBack日志

    <dependency>

    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>

    </dependency>
    <dependency>

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

    </dependency>

    # 日志级别,日志追加程序列表...
    log4j.rootLogger=DEBUG,ServerDailyRollingFile,stdout
    #文件保存日志
    log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
    #文件保存日志日期格式
    log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd_HH
    #文件保存日志文件路径
    log4j.appender.ServerDailyRollingFile.File=/mnt/lunqi/demo/log4j.log
    #文件保存日志布局程序
    log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout
    #文件保存日志布局格式
    log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n
    #文件保存日志需要向后追加(false是测试的时候日志文件就清空,true的话就是在之前基础上往后写)
    log4j.appender.ServerDailyRollingFile.Append=false
    #控制台日志
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    #控制台日志布局程序
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    #控制台日志布局格式
    log4j.appender.stdout.layout.ConversionPattern=%d yyyy-MM-dd HH:mm:ss %p [%c] %m%n

    Log4j2

    同样排除LogBack干扰,并且引入Log4j2依赖

    <dependency>

    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>

    </dependency>
    <dependency>

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

    </dependency>

    log4j2.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration> 
        <appenders> 
            <Console name="Console" target="SYSTEM_OUT"> 
                <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> 
                <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
            </Console>
            <File name="log" fileName="log/test.log" append="false">
                <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
            </File> 
            <RollingFile name="RollingFile" fileName="logs/spring.log" filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log">
                <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" />
                <SizeBasedTriggeringPolicy size="50MB" />
            </RollingFile>
        </appenders> 
    
        <loggers> 
            <root level="trace">
                <appender-ref ref="RollingFile" />
                <appender-ref ref="Console" />
            </root>
        </loggers>
    </configuration>

    更多查看官方文档

    https://docs.spring.io/spring...

  • 相关阅读:
    Android基础知识
    使用Android Studio和Genymotion模拟器搭建Andriod开发环境
    【原】Java开发环境搭建
    【转】JavaScript顶级对象参考模型
    【转】在.Net中关于AOP的实现
    【转】各版本IIS下ASP.net请求处理过程区别
    【转】我们应该如何去了解JavaScript引擎的工作原理
    Linux系统编程(27)——线程控制
    Linux系统编程(26)——守护进程
    Linux系统编程(25)——终端
  • 原文地址:https://www.cnblogs.com/handsome1013/p/11201316.html
Copyright © 2020-2023  润新知