springboot 默认日志配置

栏目: Java · 发布时间: 5年前

内容简介:SpringBoot 日志配置 默认采用LogBack作为日志输出!具体输出的格式详解如下:

springboot 默认日志配置

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

日志格式化

springboot 默认日志配置

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

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

默认输出格式

springboot 默认日志配置

可以通过 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

springboot 默认日志配置

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

自定义日志配置

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

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

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

  • 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

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...


以上所述就是小编给大家介绍的《springboot 默认日志配置》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法分析-有效的学习方法(影印版)

算法分析-有效的学习方法(影印版)

Jeffrey J.McConnell / 高等教育出版社 / 2003-03-01 / 28.0

本书主要目标是提高读者关于算法对程序效率的影响等问题的认知水平,并培养读者分析程序中的算法所必需的技巧。各章材料以激发读者有效的、协同的学习方法的形式讲述。通过全面的论述和完整的数学推导,本书帮助读者最大限度地理解基本概念。 本书内容包括促使学生参与其中的大量程序设计课题。书中所有算法以伪码形式给出,使得具备条件表达式、循环与递归方面知识的读者均易于理解。本书以简洁的写作风格向读者介绍了兼具......一起来看看 《算法分析-有效的学习方法(影印版)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具