Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在每个日志语句中打印.yml文件中提供的应用程序名称?_Java_Spring_Spring Boot_Log4j_Log4j2 - Fatal编程技术网

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**”)

以上将输出以下内容: