Java 如何在每个日志语句中打印.yml文件中提供的应用程序名称?
我想在我的Java 如何在每个日志语句中打印.yml文件中提供的应用程序名称?,java,spring,spring-boot,log4j,log4j2,Java,Spring,Spring Boot,Log4j,Log4j2,我想在我的log4j日志中打印.yml文件中提供的应用程序名称 我的log4j模式是 LOG_PATTERN=[%d{yyyy-MM-dd HH:mm:ss.SSS}] boot%X{context} - ${PID} ${LOG_LEVEL_PATTERN} [%t] --- %c{1}: %m%n 目前我得到的日志如下 2017-09-16 15:53:35.687 INFO 18302 --- [ restartedMain] mc.n.e.EurekaDiscoveryClientC
log4j
日志中打印.yml
文件中提供的应用程序名称
我的log4j
模式是
LOG_PATTERN=[%d{yyyy-MM-dd HH:mm:ss.SSS}] boot%X{context} - ${PID} ${LOG_LEVEL_PATTERN} [%t] --- %c{1}: %m%n
目前我得到的日志如下
2017-09-16 15:53:35.687 INFO 18302 --- [ restartedMain] mc.n.e.EurekaDiscoveryClientConfiguration : My Log print statement
我希望日志打印的格式
2017-09-16 15:53:35.687 INFO 18302 --- [**APPLICATION_NAME**] [ restartedMain] mc.n.e.EurekaDiscoveryClientConfiguration : My Log print statement
2017-09-16 15:53:35.687 INFO 18302 --- [**APPLICATION_NAME**] [ restartedMain] mc.n.e.EurekaDiscoveryClientConfiguration : My Log print statement
如何将应用程序名称放在
log4j
log中假设这是一个web应用程序,您可以使用筛选器和
见示例:
public class MDCFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
MDC.put("appName", "**APPLICATION_NAME**");
chain.doFilter(request, response);
} finally {
MDC.remove("appName");
}
}
}
上面的过滤器将把你的应用程序名放入MDC,然后你可以使用日志模式打印应用程序名
根据您的日志模式,请参见下面的修改:
%d{yyyy-MM-dd HH:mm:ss.SSS} boot%X{context} - ${PID} ${LOG_LEVEL_PATTERN} [%t] --- [%X{appName}%n] %c{1}: %m%n
注意:%X{appName}%n
将输出放置在筛选器中的内容MDC.put(“appName”,“APPLICATION_NAME**”)代码>
以上将输出以下内容: