• log4j2配置文件动态获取容器环境变量


    一 背景

    一个项目在不同的环境中运行时可能有不同日志输出路径,比如在开发环境是一个命名空间,在测试环境又是另外一个命名空间,在生产环境又是另外一个命名空间,尤其是容器化服务之后,日志输出路径经常随命名空间变动而变,但是使用的是同一个日志配置文件,所以需要日志路径随命名空间不同而变。

    二 log4j2日志文件配置

    1 查阅大量资料都跟我使用的不一样,不说版本都是流氓,先说使用的日志及版本

     

    这个是springboot集成的log4j依赖, 直接引入即可

    2 配置文件

     

    多次启动springboot项目均无法获取到变量,其在日志文件夹创建了一个${browser.log.namespace}文件夹日志目录,

     

    手动在代码或者jvm启动参数里面设置变量,也均无法获取到

     

     

    生成文件和原来一样,依旧无法生成文件。

    然后再继续修改配置文件

     

    当配置前加sys时,获取不到变量就会报错,但是项目依旧可以启动,日志不会输出到文件,控制台会又打印。

    加上sys了之后在jvm参数配置或者在代码里面用system设置进去之后,日志文件均可以获取到这个变量

     

    系统变量很麻烦,再进一步看看能不能使用环境变量

    先把k8s容器里面系统变量和环境变量打印出来

     

     

    发现应用可以获取到容器的环境变量

    修改日志文件

     

    日志配置文件可以正常获取系统变量

    log4j2组件加载验证是不能从apollo直接获取配置的命名空间,但是log4j配置文件可以从系统变量和环境变量里面获取

    a在系统变量里面获取需要加前缀sys:

    b 在系统变量里面获取需要加 env:

  • 相关阅读:
    sass和compass的配置
    MAC apache配置
    js库
    Tomcat7 配置 ssl
    同一对象内的嵌套方法调用AOP失效原因分析
    Spring Boot文件无法下载问题排查过程记录
    Apache、Spring、Cglib的beancopy效率对比
    使用in作为查询条件优化SQL并使用set筛选结果集
    Java使用foreach遍历集和时不能add/remove的原因剖析
    Python爬虫实践——爬取网站文章
  • 原文地址:https://www.cnblogs.com/yanhuahayi/p/14297615.html
Copyright © 2020-2023  润新知