一、应用场景
性能平台需要区分并查看各个客户端的日志信息,方便用户在调试或者运行时查看日志,定位分析执行问题或服务问题
二、解决方案
通常有两种方法来解决这个问题:
- 不同客户端日志写入不同文件
- 不同客户端日志写入同一文件,给日志添加客户端前缀标识
在此次解决中两种方式结合使用,不同客户端的文件名根据增加特定id区分,在日志文件中给日志增加前缀标识
原因:
- grafana+loki支持搜索文件的方法直接搜索特定文件名的文件
- grafana+loki支持全局某个字段的搜索
三、设计思路
设计背景:
- log4j2仅在程序启动时初始化一次
- clientId(客户端唯一识别)的生命周期:启动软件 -> 关闭软件,动态变化
设计思路:
- 程序启动时初始化clientId,并做为这个客户端的唯一标识
- 把clientId添加到log4j2.xml配置文件
四、相关配置
4.1 添加系统属性
在服务main函数中配置系统属性
try {
//设置本机地址到环境变量
System.setProperty("clientId", LocalIP.getIpAddress