最近线上有个需求,将每个服务的多个实例打出的日志在日志名称和内容里增加ip信息,首先当然是先百度(Google)一下,看看实现方式。
- 创建一个类继承自ch.qos.logback.classic.pattern.ClassicConverter
- 重写convert()方法,在该方法内返回ip信息
public class LogUtil extends ClassicConverter {
@Override
public String convert(ILoggingEvent event) {
String ip = null;
try {
ip= InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
logger.error("获取ip异常", e.toString());
}
return ip;
}
}
3.配置logback.xml
<conversionRule conversionWord="ip" converterClass="xxx.xxx.xxx.LogUtil" />
4.在需要显示ip的地方加上:%ip
但是在运行过程中发现在日志文件创建过程中,该配置还没有生效,文件名显示undefined。 所以如果需要在日志文件名中也显示ip等自定义信息,可以实现PropertyDefiner接口或者继承PropertyDefinerBase类,然后重写getPropertyValue()方法即可。
官网介绍: