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");
注意:在application配置中,默认是info。所以在使用时,一般也建议用logger.info();
四、输出文件-xxx.log
根据log_home的配置,找到日志文件。比如logs/XXX.log
本文主要是保证能用起来,更多完整功能,请参见:springboot使用logback日志框架超详细教程_logback springboot