2017-09-16 5 views
0

Je veux imprimer mon nom d'application fourni dans .yml fichier dans mes log4j journauxcomment imprimer le nom d'application fourni dans le fichier .yml dans chaque instruction de journal?

mon modèle log4j est

LOG_PATTERN=[%d{yyyy-MM-dd HH:mm:ss.SSS}] boot%X{context} - ${PID} ${LOG_LEVEL_PATTERN} [%t] --- %c{1}: %m%n 

Actuellement je recevais des journaux comme

2017-09-16 15:53:35.687 INFO 18302 --- [ restartedMain] mc.n.e.EurekaDiscoveryClientConfiguration : My Log print statement 

Le format que je veux que mes journaux imprimer

2017-09-16 15:53:35.687 INFO 18302 --- [**APPLICATION_NAME**] [ restartedMain] mc.n.e.EurekaDiscoveryClientConfiguration : My Log print statement 

Comment puis-je mettre le nom de l'application là dans log4j journal

Répondre

0

En supposant qu'il est une application Web, vous pouvez utiliser un filtre et MDC.

Voir par exemple:

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"); 
     } 
    } 
} 

Le filtre ci-dessus mettra votre nom d'application dans MDC et vous pouvez utiliser un modèle de journal pour imprimer le nom de l'application.

En fonction de votre modèle de journal, voir modification ci-dessous:

%d{yyyy-MM-dd HH:mm:ss.SSS} boot%X{context} - ${PID} ${LOG_LEVEL_PATTERN} [%t] --- [%X{appName}%n] %c{1}: %m%n 

Note: %X{appName}%n qui sera sortie ce qui a été placé dans le filtre MDC.put("appName", "**APPLICATION_NAME**");

La sortie sera avant les éléments suivants:

2017-09-16 15:53:35.687 INFO 18302 --- [**APPLICATION_NAME**] [ restartedMain] mc.n.e.EurekaDiscoveryClientConfiguration : My Log print statement