<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration 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="%X{traceId} | %4d %p - %C{1}.%M(%L) | %m%n" />
</layout>
</appender>
<appender name="fileout" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="/data/serverside_tomcat_logs/log.log" />
<param name="File" value="/data/serverside_tomcat_logs/log.log" />
<param name="MaxFileSize" value="102400KB" />
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%X{traceId} | %4d %p - %C{1}.%M(%L) | %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="info" />
<param name="levelMax" value="info" />
<param name="AcceptOnMatch" value="true" />
</filter>
</appender>
<appender name="datacenter" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/data/serverside_tomcat_logs/logs/datacenter.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%X{traceId} | %4d %p - %C{1}.%M(%L) | %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="info" />
<param name="levelMax" value="info" />
<param name="AcceptOnMatch" value="true" />
</filter>
</appender>
<appender name="exception" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/data/serverside_tomcat_logs/logs/datacenter.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%X{traceId} | %4d %p - %C{1}.%M(%L) | %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="info" />
<param name="levelMax" value="info" />
<param name="AcceptOnMatch" value="true" />
</filter>
</appender>
<appender name="test" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File"
value="/data/serverside_tomcat_logs/logs/testfortimeseries.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%X{traceId} | %4d %p - %C{1}.%M(%L) | %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="info" />
<param name="levelMax" value="info" />
<param name="AcceptOnMatch" value="true" />
</filter>
</appender>
<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="32768" />
<appender-ref ref="fileout" />
<appender-ref ref="datacenter" />
<appender-ref ref="exception" />
<appender-ref ref="test" />
</appender>
<logger name="com.morningstar.oneteam.datacenter.exception">
<level value="debug" />
<appender-ref ref="exception" />
</logger>
<logger name="com.morningstar.oneteam.datacenter">
<level value="debug" />
<appender-ref ref="datacenter" />
</logger>
<logger name="test">
<level value="debug" />
<appender-ref ref="test" />
</logger>
<root>
<priority value="warn" />
<appender-ref ref="stdout" />
<appender-ref ref="fileout" />
<appender-ref ref="ASYNC" />
</root>
</log4j:configuration>
=======log4j.properties
# Global logging configuration
log4j.rootLogger=WARN,fileout,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%4d %p - %C{1}.%M(%L) | %m%n
#datacenter
log4j.categoryorg.com.morningstar=DEBUG
# Rolling log file output...
log4j.appender.fileout=org.apache.log4j.RollingFileAppender
log4j.appender.fileout.File=/data/serverside_tomcat_logs/log.log
log4j.appender.fileout.MaxFileSize=10240KB
log4j.appender.fileout.MaxBackupIndex=3
log4j.appender.fileout.Append=true
log4j.appender.fileout.BufferSize=8192
log4j.appender.fileout.ImmediateFlush=false
log4j.appender.fileout.BufferedIO=true
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.conversionPattern=%4d %p - %C{1}.%M(%L) | %m%n
#datacenter
log4j.logger.com.morningstar.oneteam.datacenter=DEBUG,datacenter
log4j.appender.datacenter=org.apache.log4j.DailyRollingFileAppender
log4j.appender.datacenter.File=/data/serverside_tomcat_logs/logs/datacenter.log
log4j.appender.datacenter.MaxFileSize=102400KB
log4j.appender.datacenter.DatePattern='.'yyyy-MM-dd
log4j.appender.datacenter.Append=true
log4j.appender.datacenter.BufferSize=8192
log4j.appender.datacenter.ImmediateFlush=false
log4j.appender.datacenter.BufferedIO=true
log4j.appender.datacenter.layout=org.apache.log4j.PatternLayout
log4j.appender.datacenter.layout.conversionPattern=%4d %p - %C{1}.%M(%L) | %m%n
log4j.logger.com.morningstar.oneteam.datacenter.exception=DEBUG,exception
log4j.appender.exception=org.apache.log4j.DailyRollingFileAppender
log4j.appender.exception.File=/data/serverside_tomcat_logs/logs/exception.log
log4j.appender.exception.DatePattern='.'yyyy-MM-dd
log4j.appender.exception.Append=true
log4j.appender.exception.BufferSize=8192
log4j.appender.exception.ImmediateFlush=false
log4j.appender.exception.BufferedIO=true
log4j.appender.exception.layout=org.apache.log4j.PatternLayout
log4j.appender.exception.layout.conversionPattern=%4d %p - %C{1}.%M(%L) | %m%n
log4j.logger.test=DEBUG,testfortimeseries
log4j.appender.testfortimeseries=org.apache.log4j.DailyRollingFileAppender
log4j.appender.testfortimeseries.File=/data/serverside_tomcat_logs/logs/testfortimeseries.log
log4j.appender.testfortimeseries.DatePattern='.'yyyy-MM-dd
log4j.appender.testfortimeseries.Append=true
log4j.appender.testfortimeseries.BufferSize=8192
log4j.appender.testfortimeseries.ImmediateFlush=false
log4j.appender.testfortimeseries.BufferedIO=true
log4j.appender.testfortimeseries.layout=org.apache.log4j.PatternLayout
log4j.appender.testfortimeseries.layout.conversionPattern=%4d %p - %C{1}.%M(%L) | %m%n
======================================use mdc
package com.morningstar.oneteam.log;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.log4j.MDC;
public class TraceUtils
{
public static final String TRACE_KEY = "traceId";
public static final int TRACE_LENGTH = 8;
public static void beginTrace()
{
String traceId = RandomStringUtils.randomAlphanumeric(8);
MDC.put("traceId", traceId);
}
public static void beginTrace(String traceId) {
MDC.put("traceId", traceId);
}
public static void endTrace() {
MDC.remove("traceId");
}
public static String getTraceIdKey() {
return ((String)MDC.get("traceId"));
}
}
-----------------------------------------------------------------------------
private static String format(String str) {
String strLog = TraceUtils.getTraceIdKey() + " | " + str + "\n";
return strLog;
}
--------------------------------
protected final Log LOG = LogFactory.getLog(this.getClass());