Spring Boot系列(十一) Spring Boot 日志控制

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

内容简介:Spring Boot系列(十一) Spring Boot 日志控制

这一篇介绍Spring Boot 日志控制,需要springboot实战完整视频教程的,点击 这里

Spring Boot对日志的处理,和我们平时的日志处理完全一致,通过logback.xml进行日志管理功能。为了简便,这里采用“Spring Boot构建框架”一章节使用的工程,讲述如何在Spring Boot中处理日志。

第一步,虽然Spring Boot中application.properties配置文件提供了日志的配置,但是个人更倾向于旧的配置方式。在src/main/resources目录中增加logback.xml日志文件,文件内容如下(配置相对简单,个人请根据工程情况,进行相应的配置):

<configuration scan="true" scanPeriod="10 seconds">
<include resource="org/springframework/boot/logging/logback/base.xml" />

<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_PATH}/info.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/info-%d{yyyyMMdd}.log.%i
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>2</maxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
</Pattern>
</layout>
</appender>

<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<File>${LOG_PATH}/error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/error-%d{yyyyMMdd}.log.%i
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>2</maxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n

</Pattern>
</layout>
</appender>

<logger name="com.example" level="DEBUG">
<appender-ref ref="baselog" />
</logger>

<root level="INFO">
<appender-ref ref="INFO_FILE" />
<appender-ref ref="ERROR_FILE" />
</root>

</configuration>

注意:

1)控制台和日志文件的字符集

2)日志文件的存放位置,须要遵守 Linux 的命名规则

第二步,在application.properties中指定logback.xml和日志生成的路径,如下:

logging.config=classpath:logback.xml
logging.path=/workspace/log

第三步,新建HelloController类,具体内容如下:

package com.example;  

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

protected static Logger logger=LoggerFactory.getLogger(HelloController.class);

@RequestMapping("/")
public String helloworld(){
logger.debug("访问hello");
return "Hello world!";
}

@RequestMapping("/hello/{name}")
public String helloName(@PathVariable String name){
logger.debug("访问 helloName,Name={}",name);
return "Hello "+name;
}
}

注意:在添加引用时,日志的包一定是org.slf4j.Logger、org.slf4j.LoggerFactory类。

第四步,测试

1)运行主程序

2)在浏览器中依次输入

http://localhost:8080/
http://localhost:8080/hello/素文宅博客

3)由于我的工程在D盘所有log日志文件所在的目录找到D:/workspace/log文件夹下,日志文件的名称是在配置文件logback.xml中设置的。

在application.properties可以配置日志相关属性


控制台输出

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

Spring Boot中默认配置ERROR、WARN和INFO级别的日志输出到控制台。您还可以通过启动您的应用程序--debug标志来启用“调试”模式(开发的时候推荐开启)。

以下两种方式皆可:

1)在运行命令后加入--debug标志,如:$ java -jar springTest.jar --debug

2)在application.properties中配置debug=true,该属性置为true的时候,核心Logger(包含嵌入式容器、hibernate、spring)会输出更多内容,但是你自己应用的日志并不会输出为DEBUG级别。

文件输出

默认情况下,Spring Boot将日志输出到控制台,不会写到日志文件。如果要编写除控制台输出之外的日志文件,则需在application.properties中设置logging.file或logging.path属性。

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

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

如果只配置logging.file,会在项目的当前路径下生成一个 xxx.log 日志文件。如果只配置 logging.path,在 /var/log文件夹生成一个日志文件为 spring.log

注意:二者不能同时使用,如若同时使用,则只有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.com.dudu=DEBUG:com.example包下所有class以DEBUG级别输出
logging.level.root=WARN:root日志以WARN级别输出

自定义日志配置

由于日志服务一般都在ApplicationContext创建前就初始化了,它并不是必须通过Spring的配置文件控制。因此通过系统属性和传统的Spring Boot外部配置文件依然可以很好的支持日志控制和管理。

根据不同的日志系统,你可以按如下规则组织配置文件名,就能被正确加载:

Logbacklogback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
Log4jlog4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
Log4j2log4j2-spring.xml, log4j2.xml
JDK (Java Util Logging):logging.properties

Spring Boot官方推荐优先使用带有-spring的文件名作为你的日志配置(使用logback-spring.xml名称,而不是logback.xml名称),命名为logback-spring.xml的日志配置文件,spring boot可以为它添加一些spring boot特有的配置项。

来源: 素文宅博客

链接: https://blog. yood b.com/yoodb/article/detail/1412

Spring Boot系列(十一) Spring Boot 日志控制

以上所述就是小编给大家介绍的《Spring Boot系列(十一) Spring Boot 日志控制》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Foundations of PEAR

Foundations of PEAR

Good, Nathan A./ Kent, Allan / Springer-Verlag New York Inc / 2006-11 / $ 50.84

PEAR, the PHP Extension and Application Repository, is a bountiful resource for any PHP developer. Within its confines lie the tools that you need to do your job more quickly and efficiently. You need......一起来看看 《Foundations of PEAR》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具