您的位置 首页 java

软件架构-Spring boot集成日志框架Log4J, Log4J2, Logback

软件架构-Spring boot集成日志框架Log4J, Log4J2, Logback

日志系统

springboot自带log日志功能 使用的是 slf4j (Simple Logging Facade For Java),它是一个针对于各类Java日志框架的统一Facade抽象。Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。这是默认支持logback的原因。日志实现默认使用的logback。

在spring-boot-starter 依赖中,添加了 spring-boot-starter-logging依赖

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

那么, Spring Boot 应用将自动使用 logback 作为应用日志框架, Spring Boot 启动的时候,由 org.springframework.boot.logging.Logging.LoggingApplicationListener 根据情况初始化并使用。

值得注意的是,默认情况下,Spring Boot 使用 logback 作为应用日志框架。因为 spring-boot-starter 其中包含了 spring-boot-starter-logging,该依赖就是 使用Spring Boot 默认的日志框架 logback。

软件架构-Spring boot集成日志框架Log4J, Log4J2, Logback

程序中使用

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

private final Logger logger = LoggerFactory.getLogger(SampleController.class);

  • 日志级别

默认情况下,Spring Boot 配置的是INFO 日志级别,也就是会输出INFO级别以上的日志( ERROR, WARN, INFO )。如果需要 Debug 级别的日志。在 src/main/resources/application.properties 中配置。

debug=true此外,配置 logging. level .* 来具体输出哪些包的日志级别。

logging.level.root=INFO
logging.level.org.springframework.web=DEBUG
logging.level.com.idig8.boot.controller=DEBUG
 
  • 日志文件

默认情况下, Spring Boot 日志只会输出到控制台,并不会写入到日志文件,因此,对于正式环境的应用,我们需要通过在 application.properites 文件中配置 logging. file 文件名称和 logging.path 文件路径,将日志输出到日志文件中。

logging.path = / var / tmp 
logging.file = xxx.log
logging.level.root = info
 

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

值得注意的是,日志文件会在 10MB 大小的时候被截断,产生新的日志文件。

  • 常用的日志框架 log4j

我们希望使用 log4j 或者 log4j2,我们可以采用类似的方式将它们对应的依赖模块加到 Maven 依赖中。

1.集成log4j2

在spring-boot-dependencies POMs中搜索spring-boot-starter-log4j2

发现Spring boot父Pom中自己提供了这个依赖,于是我们加入如下jar依赖:

<!– 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>

2.集成log4j

在spring-boot-dependencies POMs中搜索spring-boot-starter-log4j

发现Spring boot的父Poms中自己并没有提供了这个依赖, 我们在中央仓库中查找spring-boot-starter-log4j。

加入pom依赖

<!-- log4j start -->
<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>
 <version>1.3.8.RELEASE</version>
</dependency>
<!-- log4j end -->
 

classpath下增加log4j.properties

log4j.rootCategory=INFO,  stdout , file, errorfile
log4j.category.com.example.boot=INFO, myFile
log4j.logger.error=errorfile
# 控制台输出
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,SSS} %5p %c{1}:%L - %m%n
# root日志输出
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=logs/all.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
# error日志输出
log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorfile.file=logs/error.log
log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
log4j.appender.errorfile.Threshold = ERROR
log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
# com.example.boot下的日志输出
log4j.appender.myFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myFile.file=logs/my.log
log4j.appender.myFile.DatePattern='.'yyyy-MM-dd
log4j.appender.myFile.layout=org.apache.log4j.PatternLayout
log4j.appender.myFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n
 

代码中使用log4j

import org.apache.log4j.Logger;
private final Logger logger = Logger.getLogger(xxx.class);
 

PS:springBoot这几次根本不说原理的,在企业级里面最重要的还是应用。就直说的配置和应用相关的。只有应用起来才可以进行深度的分析。

文章来源:智云一二三科技

文章标题:软件架构-Spring boot集成日志框架Log4J, Log4J2, Logback

文章地址:https://www.zhihuclub.com/194106.shtml

关于作者: 智云科技

热门文章

网站地图