springboot整合日志(一)----------log4j2

版权声明:本文为博主原创文章,转载请注明出处,尊重劳动成果,谢谢~ https://blog.csdn.net/zhanglf02/article/details/88909106

接触最早的日志框架是log4jlogback这俩。log4j2是最近项目用到的,查资料看博客,发现log4j2log4j的重写的二代框架,在多线程写日志的解决了死锁问题,在速度上快了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.所以现在常用的日志基本上是logbacklog4j2.
如果把logbacklog4j2二者比较:
性能比较:Log4J2Logback 都优于 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中
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhanglf02/article/details/88909106