ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-01-19 14:04:10  阅读:706  来源: 互联网

标签:变量 配置文件 获取 命名 日志 log4j2 环境变量


一 背景

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

二 log4j2日志文件配置

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

 

 

 

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

2 配置文件

 

 

 

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

 

 

 

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

 

 

 

 

 

 

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

然后再继续修改配置文件

 

 

 

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

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

 

 

 

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

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

 

 

 

 

 

 

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

修改日志文件

 

 

 

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

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

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

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

 

标签:变量,配置文件,获取,命名,日志,log4j2,环境变量
来源: https://www.cnblogs.com/yanhuahayi/p/14297615.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有