版权声明:本文为博主原创文章,转载请注明出处,尊重劳动成果,谢谢~ https://blog.csdn.net/zhanglf02/article/details/88909106
接触最早的日志框架是log4j
和logback
这俩。log4j2
是最近项目用到的,查资料看博客,发现log4j2
是log4j
的重写的二代框架,在多线程写日志的解决了死锁问题,在速度上快了10倍甚至更高。并且在springboot的版本上,spring boot 1.3版本支持log4j
,在spring boot 1.4的版本中,就需要使用log4j2
,否则会出现如下错误:Project build error: 'dependencies.dependency.version' for org.springframework.boot:spring-boot-starter-log4j:jar is missing.
所以现在常用的日志基本上是logback
和log4j2
.
如果把logback
和log4j2
二者比较:
性能比较:Log4J2
和 Logback
都优于 log4j
(不推荐使用)
配置方式:Logback
最简洁,spring boot默认,推荐使用
所以本日志博客分为两节,第一节讲log4j2
。第二节讲lagback
1.本springboot项目结构
2.log4j2的日志引入主要分为几个步骤。
首先引入依赖,然后添加日子的配置文件,最后将配置文件引入到yml文件中生效。后就可以在项目中使用lombok的插件直接在类上注解即可使用。
- 2.1 pom.xml中引入依赖。
注意点:在创建Spring Boot工程时,我们引入了spring-boot-starter,其中包含了spring-boot-starter-logging,该依赖内容就是Spring Boot默认的日志框架Logback,所以我们在引入log4j2之前,需要先排除该包的依赖,再引入log4j2的依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</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>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
- 2.2 log4j2.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="info" strict="true" name="LogConfig">
<Properties>
<Property name="filePath">/logs</Property>
<Property name="projectName">catal*****erver</Property>
</Properties>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss,SSS} %t %l %m%n</Pattern>
</PatternLayout>
</Console>
<RollingFile name="logService"
fileName="${filePath}/${projectName}/${projectName}.log"
filePattern="${filePath}/${projectName}/${projectName}.log-%d{yyyyMMddHH}">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss,SSS} %p %t %F:%L %m%n</Pattern>
</PatternLayout>
<Policies>
<CronTriggeringPolicy schedule="0 0 0/1 * * ? *" evaluateOnStartup="true"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="fileLogger" level="info" additivity="false">
<AppenderRef ref="logService"/>
<AppenderRef ref="STDOUT"/>
</Logger>
<Root level="info">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="logService"/>
</Root>
</Loggers>
</Configuration>
下面针对配置文件进行图文说明。解释都是啥个意思
- 2.3 在application.yml文件中引入配置文件,正式生效日志的配置
logging:
config: classpath:log4j2.xml
- 2.4 在项目中使用log4j2 DEMO
- 如果不想每次都写private final Logger logger = LoggerFactory.getLogger(XXX.class); 可以用注解@Slf4j,这个注解需要引入lombok的jar包依赖。已添加到pom中