Logback日志名和日志内容配置增加ip等信息

mac2026-05-16  5

最近线上有个需求,将每个服务的多个实例打出的日志在日志名称和内容里增加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()方法即可。

官网介绍:http://logback.qos.ch/manual/configuration.html

public class LogUtil extends PropertyDefinerBase{ @Override public String getPropertyValue() { String ip = null; try { ip= InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException e) { logger.error("获取ip异常", e.toString()); } return ip; } }

然后在logback.xml中的<configuration>中配置即可。

<define name="ip" class=""xxx.xxx.xxx.LogUtil"/>
最新回复(0)