Search code examples
javaspring-bootjbosslog4jquartz-scheduler

Can we add server name in log message?


I am using

jboss at domain mode

and configured it to create a consolidate log file for all managed servers

Now I want server name in my log message is there any method i can try using simple java for it.

I expect these results

11:44:01,937 INFO [stdout] (schedulerFactoryBean_Worker-1) MyTaskOne start..

11:44:01,938 INFO [stdout] (schedulerFactoryBean_Worker-1) Job run on server-one

11:44:01,937 INFO [stdout] (schedulerFactoryBean_Worker-1) MyTaskOne start..

11:44:01,938 INFO [stdout] (schedulerFactoryBean_Worker-1) Job run on server-two

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false" xmlns:log4j='http://jakarta.apache.org/log4j/'>

  <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
     <layout class="org.apache.log4j.PatternLayout" >
     <param name="ConversionPattern" value="[%c] (%x:%t) [User:%X{logguserid}] %m%n"/>
     </layout>
  </appender>

  <appender name="AppLogWriter" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="D:/jboss-as-7.1.1.Final/domain/log/server.log"/>
    <param name="Append" value="true"/>
    <param name="MaxFileSize" value="10MB"/>
    <param name="MaxBackupIndex" value="100"/>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%x:%t) [User:%X{logguserid}] %m%n"/>
    </layout>
  </appender>  
  
  <appender name="AuditLogWriter" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="D:/jboss-as-7.1.1.Final/domain/log/server.log"/><!--path of auditlog file-->
    <param name="Append" value="true"/>
    <param name="MaxFileSize" value="10MB"/>
    <param name="MaxBackupIndex" value="10"/>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%x:%t) [User:%X{logguserid}] %m%n"/>
    </layout>
  </appender>

  <root>
    <priority value="info"/>
    <appender-ref ref="AppLogWriter"/>
    <appender-ref ref="stdout"/>
  </root>

<logger name=".audit.log" level="info" additivity="false">
   <appender-ref ref="AuditLogWriter" />
</logger>


<appender name="CLASSLOADING" class="org.apache.log4j.RollingFileAppender">     
  <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>     
  <param name="File" value= "D:/Logs/classloading.log"/>     
  <param name="Append" value="false"/>    
  <param name="MaxFileSize" value="5000KB"/>    
  <param name="MaxBackupIndex" value="10"/>     
  <layout class="org.apache.log4j.PatternLayout">    
    <param name="ConversionPattern" value="%d %m%n"/>    
  </layout> 
</appender>   

<category name="org.jboss.classloading">
  <priority value="TRACE"/>    
  <appender-ref ref="CLASSLOADING"/> 
</category>

</log4j:configuration>

Output

11:44:01,427 INFO  [com.Quartz_Oracle_11g.task.MyTaskOne] (schedulerFactoryBean_Worker-1) this is a info message
11:44:01,428 WARN  [com.Quartz_Oracle_11g.task.MyTaskOne] (schedulerFactoryBean_Worker-1) this is a warn message
11:44:01,429 ERROR [com.Quartz_Oracle_11g.task.MyTaskOne] (schedulerFactoryBean_Worker-1) this is a error message
11:44:01,431 INFO  [stdout] (schedulerFactoryBean_Worker-1) MyTaskOne done..

11:44:01,728 INFO  [org.springframework.batch.core.job.SimpleStepHandler] (schedulerFactoryBean_Worker-1) Duplicate step [stepOne] detected in execution of job=[demoJob]. If either step fails, both will be executed again on restart.
11:44:01,862 INFO  [org.springframework.batch.core.job.SimpleStepHandler] (schedulerFactoryBean_Worker-1) Executing step: [stepOne]
11:44:01,937 INFO  [stdout] (schedulerFactoryBean_Worker-1) MyTaskOne start..

11:44:01,938 INFO  [stdout] (schedulerFactoryBean_Worker-1) Job

11:44:01,938 INFO  [com.Quartz_Oracle_11g.task.MyTaskOne] (schedulerFactoryBean_Worker-1) this is a info message
11:44:01,939 WARN  [com.Quartz_Oracle_11g.task.MyTaskOne] (schedulerFactoryBean_Worker-1) this is a warn message
11:44:01,940 ERROR [com.Quartz_Oracle_11g.task.MyTaskOne] (schedulerFactoryBean_Worker-1) this is a error message
11:44:01,941 INFO  [stdout] (schedulerFactoryBean_Worker-1) MyTaskOne done..

11:44:02,151 INFO  [org.springframework.batch.core.launch.support.SimpleJobLauncher] (schedulerFactoryBean_Worker-1) Job: [SimpleJob: [name=demoJob]] completed with the following parameters: [{JobID=1573539240754}] and the following status: [COMPLETED]
11:44:02,153 INFO  [org.quartz.plugins.history.LoggingTriggerHistoryPlugin] (schedulerFactoryBean_Worker-1) Trigger [DEFAULT.jobTrigger] completed firing job [DEFAULT.demoJob] with resulting trigger instruction code: DO NOTHING. Next scheduled at:  12-11-2019 11:45:00.000

Solution

  • You can put it to Log4j Mapped Diagnostic Context:

    MDC.put("jboss.server.name", System.getProperty("jboss.server.name"));
    

    Than you can add it to the Log4j conversion pattern:

    "... [jboss-server-name=%X{jboss.server.name}] ..."