java日志默认输出到控制台,日志过多可能会造成内存不足卡死。更主要的是这个日志不方便存储,保存。如果要查询早期的日志非常不方便。

所以,我们会选择把日志保存到本地文件或数据库。这个需要看业务类型来决定。但常规情况下,至少要保存到本地文件中。

本文就介绍如何进行配置日志依赖,并将日志保存到日志文件。

目录

一、Logback是SpringBoot默认日志记录器。

二、日志输出到文件的配置-logback-spring.xml

三、Logger使用-logger.info("12313")

四、输出文件-xxx.log


一、Logback是SpringBoot默认日志记录器。

日志级别分为:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,

默认情况下,spring boot从控制台打印出来的日志级别只有INFO及以上级别,可以配置日志级别。

可以在application配置文件中配置,示例如下:

logging:
  level:
    root: debug

二、日志输出到文件的配置-logback-spring.xml

因为Logback要配置的还是挺多的,比如日志按天生成,单个文件最大限制等。建议直接百度网上别人配好的logback-spring.xml文件使用。而不用自己配置。

我的配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="logs" />
    <!-- 彩色日志配置 -->
	<!-- 彩色日志依赖的渲染类 -->
	<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}){green} %clr(${LOG_LEVEL_PATTERN:-%5p}){red} %clr(${PID:-}){magenta} %clr(---){blue} %clr([%30.30t]){yellow} %clr(%-40.40logger{39}){cyan} %clr(:){blue} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<!--            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg  %n</pattern>-->
            <pattern>%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){green} [%thread] %-5level %logger{50} - %clr(%msg){yellow}  %n</pattern>
        </encoder>
    </appender>
    <!-- 按照每天生成日志文件 -->
    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/runtime.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>
    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

可能需要改的地方:


LOG_HOME:日志文件夹,可以写./表示当前目录。


日志完整 的文件名:

<FileNamePattern>${LOG_HOME}/runtime.log.%d{yyyy-MM-dd}.log</FileNamePattern>


其他的,先拿来用着,建议不用改了。

三、Logger使用-logger.info("12313")

 像普通方法一样使用:

private final static Logger logger = LoggerFactory.getLogger("/Post"); // 创建Logger
logger.debug("logger debug test");

springboot日志文件输出到指定文件_学习

 注意:在application配置中,默认是info。所以在使用时,一般也建议用logger.info();

四、输出文件-xxx.log

根据log_home的配置,找到日志文件。比如logs/XXX.log

springboot日志文件输出到指定文件_日志文件_02

本文主要是保证能用起来,更多完整功能,请参见:springboot使用logback日志框架超详细教程_logback springboot