springboot使用log4j2且配置文件中引用pom变量

本文详细介绍了如何在SpringBoot项目中使用log4j2配置文件引入Maven变量,并通过环境切换控制日志路径和级别。通过maven-profiles管理不同环境的配置,以及解决资源文件过滤问题。

springboot在log4j2配置文件中引用pom变量

引入log4j2

首先需要引入log4j2,而spring boot默认使用的是logback,需要排除默认的log组件。logback性能不如log4j2优秀,所以我们换成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-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!--引入log4j2-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

配置log4j2

引入后,spring-boot-starter-log4j2会有默认的配置,然后笔者的需求是修改日志打印的路径,不同环境使开启不同的日志级别等,所以要修改其配置文件
比如我的配置文件是resources目录下创建log4j2-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="error">
   <appenders>
      
Spring Boot使用Log4j2日志配置后未输出日志文件,可从以下方面排查解决: ### 依赖检查 确保在`pom.xml`中正确添加了Log4j2的依赖,同时排除Spring Boot默认的日志依赖。正确的依赖配置如下: ```xml <dependencies> <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> </dependencies> ``` 若依赖缺失或配置错误,会导致Log4j2无法正常工作,从而不输出日志文件。可通过重新构建项目,确保依赖正确加载。 ### 配置文件检查 在`resources`目录下的`log4j2.xml`文件中,需正确配置日志输出器(Appender)和日志记录器(Logger)。以下是一个示例配置: ```xml <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <!-- 控制台输出 --> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/> </Console> <!-- 文件输出 --> <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{yyyy-MM-dd}.log.gz"> <PatternLayout> <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="10 MB"/> </Policies> </RollingFile> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console"/> <AppenderRef ref="RollingFile"/> </Root> </Loggers> </Configuration> ``` 要确保`RollingFile`或`File`类型的Appender配置正确,指定了正确的文件路径和文件名。同时,在`Loggers`中引用了该Appender。若配置文件存在语法错误,也会导致日志无法输出,可使用XML验证工具检查配置文件的语法。 ### 日志级别检查 检查日志记录器的日志级别配置。若日志级别设置过高,低于该级别的日志将不会输出。例如,若Root日志级别设置为`error`,则`info`、`debug`、`trace`级别的日志将不会输出。可适当调整日志级别,如将Root日志级别设置为`info`: ```xml <Root level="info"> <AppenderRef ref="Console"/> <AppenderRef ref="RollingFile"/> </Root> ``` ### 代码检查 在代码中正确使用Log4j2的API进行日志记录。示例代码如下: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestClass { private static final Logger logger = LoggerFactory.getLogger(TestClass.class); public static void main(String[] args) { logger.info("This is an info log"); } } ``` 确保在代码中正确获取日志记录器,并调用相应的日志记录方法。 ### 文件权限检查 若日志文件所在目录没有写入权限,也会导致日志无法输出。确保应用程序对指定的日志文件目录有写入权限。若在Linux系统中,可使用`chmod`命令修改目录权限。 ### 环境变量检查 某些情况下,环境变量可能会影响Log4j2的配置。检查是否存在与Log4j2相关的环境变量,如`LOG4J_CONFIGURATION_FILE`,确保其值指向正确的配置文件路径。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员beige

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值