栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

引入log4j2

首先需要引入log4j2,而spring boot默认使用的是logback,需要排除默认的log组件。logback性能不如log4j2优秀,所以我们换成log4j2。


    org.springframework.boot
    spring-boot-starter
    
        
            org.springframework.boot
            spring-boot-starter-logging
        
    


    org.springframework.boot
    spring-boot-starter-web
    
        
            org.springframework.boot
            spring-boot-starter-logging
        
    



    org.springframework.boot
    spring-boot-starter-log4j2

配置log4j2

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



   
      
         
      
      
         
            
            
         
         
         
            
         
      

      
         
            
         
         
         
            
         
      
   

   
      
         ${log_app_appender}
      
      
         ${log_app_appender}
      
   

使用maven变量

以上,用了许多变量比如,${log_file_root}、${log_app_appender}
这些变量,我们希望不同的环境取不同的值
那么我们可以利用maven的profile来实现


    
        dev
        
            /usr/local/log/${log.file}
            debug
            
                
            
            debug
            
                
            
        
    
    
        release
        
            
            /usr/local/log/${log.file}
            info
            
                
            
            error
            
                
            
        
    

可以看到,上面有两个环境的配置,分别是dev和release。我们打包时命令加上对应的环境名即可,例如:clean install -Dmaven.test.skip=true -P release

但是
spring boot 2.0 默认的变量符号是@变量名@,我们上面用的是${},所以需要将它改成${变量名},在pom文件build节点下引入maven-resource-plugin,然后设置useDefaultDelimiters = true,变量的符号就变成了${}


    
        
            org.springframework.boot
            spring-boot-maven-plugin
        
        
            org.apache.maven.plugins
            maven-resources-plugin
            
                UTF-8
                true
            
        
    

这样配置完后,笔者发现打包完成后的xml文件中,变量并没有被替换掉,还是${变量名}的字符串形式,还需要增加以下配置


    
        
            src/main/resources
            true
        
    
    
        
            org.springframework.boot
            spring-boot-maven-plugin
        
        
            org.apache.maven.plugins
            maven-resources-plugin
            
                UTF-8
                true
            
        
    

再次打包,${log_file_root}、${log_app_appender}已经打入xml文件中了。
至于为什么在配置中增加了resource目录的过滤就好了,也许是这样才能在打包时处理一遍这个目录,希望有懂的大佬交流一下。
参考:https://blog.csdn.net/chen_blog/article/details/107222088

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/305739.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号