【Log4j2】Log4j2最佳实践:Log4j2配置超过7天压缩,超过3个月删除文件的滚动日志,分别定义info文件和error文件,按照每小时存储

目录

Log4j2配置

springboot多环境日志配置

参考资料


Log4j2配置

如果你想要在控制台输出美化的日志信息,你可以使用Log4j2的ConsoleAppender和AnsiColorConverter来实现。下面是相应的配置示例:


    
        /path/to/logs
    

    
        
            
                
                    
                        
                    
                
                
                    
                        
                    
                
            
        

        
            
        

        
            
            
                
            
            
                
                    
                    
                
            
            
                
                    
                
            
        

        
            
            
                
            
            
                
                    
                    
                
            
            
                
                    
                
            
        
    

    
        
            
            
        
    

在这个配置中,我们定义了两个RollingFile appender,分别用于info日志和error日志。每个appender都有自己的文件名、文件模式、时间触发策略和滚动策略。同时,我们使用了DeleteAction来保持每个类型的日志文件在7天内,并使用GZCompressAction在满足条件后进行压缩。

使用RoutingAppender可以根据Logger的上下文信息将日志路由到不同的appender。在这个示例中,我们使用"loggerType"作为Routing key,并在Routes元素内定义了两个Route,分别将"info"和"error"路由到对应的appender。

最后,我们将RoutingAppender作为Root logger的Appender引用,以便所有日志都能正确路由到相应的appender。

请根据实际需求修改logPath配置属性,将日志存储在适当的位置。另外,你可以通过修改DeleteAction的条件来实现按照3个月删除文件的需求。例如,可以将改为

springboot多环境日志配置

在Spring Boot多环境下,可以为不同环境分别配置不同的Log4j2配置文件,使用Spring Boot提供的`logging.config`配置项指定当前环境下使用的Log4j2配置文件。

首先,在项目的resources目录下创建多个Log4j2配置文件,以application-{profile}.yml(或application-{profile}.properties)命名,其中{profile}为环境名称,如application-dev.yml、application-test.yml和application-prod.yml。

接着,在Spring Boot的配置文件(如application.yml)中,指定`logging.config`配置项的值为当前环境下使用的Log4j2配置文件路径。例如:

```yaml
spring:
  profiles:
    active: dev
  application:
    name: myapp
  main:
    allow-bean-definition-overriding: true
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

logging:
  config: classpath:log4j2-${spring.profiles.active}.xml
```

在上面的配置中,我们将`logging.config`配置项的值设置为`classpath:log4j2-${spring.profiles.active}.xml`,即使用当前激活的环境对应的Log4j2配置文件。这里使用了`${spring.profiles.active}`EL表达式获取当前激活的环境名称。

最后,在Log4j2配置文件中,可以使用`${sys:property}`获取系统属性,例如`${sys:logPath}`获取名为`logPath`的系统属性。也可以使用`${ctx:variableName}`获取Log4j2上下文变量。

例如,在Log4j2配置文件中,可以使用以下方式获取当前环境对应的配置项:

```xml

   
        ${sys:logPath}
   

   

```

在上面的配置中,我们使用`${sys:logPath}`获取名为`logPath`的系统属性。

这样,就可以实现在Spring Boot多环境下使用Log4j2的配置了。

参考资料

log4j2 的使用【超详细图文】-CSDN博客

log4j2 实际使用详解-CSDN博客

你可能感兴趣的:(Spring,log4j,单元测试,java,log4j2)