Log4j打印参数配置
<?xml version="1.0" encoding="UTF-8" ?> <Configuration status="INFO" monitorInterval="600"> <Properties> <property name="ModuleName">zzz</property> </Properties> <Appenders> <Console name="ConsoleAppender"> <PatternLayout pattern="|%d{yyyy-MM-dd HH:mm:ss.SSS}|%5p|%5t|%l|%m%n" /> </Console> <RollingRandomAccessFile name="SystemAppender" filename="/logs/CPCN/Payment/${ModuleName}/${ModuleName}.log" filepattern="/logs/CPCN/Payment/${ModuleName}/$${date:yyyy-MM-dd}/${ModuleName}.log.%d{yyyy-MM-dd-HHmmss}-%i.log"> <PatternLayout pattern="|%d{yyyy-MM-ddHH:mm:ss.SSS}|%5p|%5t|%l|%m%n" /> <Policies> <TimeBasedTriggeringPolicy modulate="true" interval="3600" /> <SizeBasedTriggeringPolicy size="64MB" /> </Policies> <DefaultRolloverStrategy max="1000" /> </RollingRandomAccessFile> </Appenders> <Loggers> <AsyncLogger name="system" additivity="false" level="INFO" includeLocation="true"> <AppenderRef ref="SystemAppender" /> </AsyncLogger> <AsyncLogger name="console" additivity="false" level="INFO" includeLocation="true"> <AppenderRef ref="SystemAppender" /> <AppenderRef ref="ConsoleAppender" /> </AsyncLogger> <AsyncLogger name="dao" additivity="false" level="INFO" includeLocation="true"> <AppenderRef ref="SystemAppender" /> </AsyncLogger> <AsyncRoot level="INFO" includeLocation="true"> <AppenderRef ref="SystemAppender" /> </AsyncRoot> </Loggers> </Configuration>
日志级别
FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7
日志输出目的地
org.apache.log4j.ConsoleAppender(控制台), org.apache.log4j.FileAppender(文件), org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
日志输出格式
org.apache.log4j.HTMLLayout(以HTML表格形式布局), org.apache.log4j.PatternLayout(可以灵活地指定布局模式), org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
打印参数
%m 输出代码中指定的消息 %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL %r 输出自应用启动到输出该log信息耗费的毫秒数 %c 输出所属的类目,通常就是所在类的全名 %t 输出产生该日志事件的线程名 %n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921 %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
看个栗子
|%d{yyyy-MM-ddHH:mm:ss.SSS}|%5p|%5t|%l|%m%n
按照上面的套一下
时间|类型|线程名|事件发送位置| %m(真实的日志信息) %n (换行)
根据这个可以知道
public void warn(LogType logType, Object message) { String msgFormatted = msgFormat(logType, message); logger.warn(msgFormatted); }
protected String msgFormat(LogType logType, Object message) { StringBuilder sb = new StringBuilder(); LogContextVO logContext = LogContextHolder.getInstance().getLogContext(); sb.append(logContext.getTraceID()); sb.append("|").append(logContext.getTransferID()); sb.append("|").append(logContext.getLocalIP()); sb.append("|").append(logContext.getTraceIP()); sb.append("|").append(moduleID); sb.append("|").append(logContext.getRootID()); sb.append("|").append(logType); sb.append("|"); sb.append(message != null ? "|" + message.toString() + "|" : ""); return sb.toString(); }
message 增加一些内容
|traceID|tranceferID|localIP|TraceIp|moduleID|rootID|logType| | 日志描述|
|1805181822152053531749637|0.3.2.7.2|192.168.145.90:|192.168.145.90:|3511|20180518182215795295|SQL| |哈哈哈|