Log4j 1.X 配置 properties 格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # Root logger option log4j.rootLogger=INFO, file, stdout # Direct log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=C:\\logging.log log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n # Direct log messages to stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
XML 格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> </layout> </appender> <appender name="file" class="org.apache.log4j.RollingFileAppender"> <param name="append" value="false" /> <param name="maxFileSize" value="10MB" /> <param name="maxBackupIndex" value="10" /> <param name="file" value="${catalina.home}/logs/myStruts1App.log" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="console" /> <appender-ref ref="file" /> </root> </log4j:configuration>
Log4j 2.X 配置 Configuring
Log4j has the ability to automatically configure itself during initialization. When Log4j starts it will locate all the ConfigurationFactory plugins and arrange them in weighted order from highest to lowest. As delivered, Log4j contains four ConfigurationFactory implementations: one for JSON, one for YAML, one for properties, and one for XML.
Log4j will provide a default configuration if it cannot locate a configuration file. The default configuration, provided in the DefaultConfiguration.class
, will set up: A ConsoleAppender attached to the root logger. A PatternLayout set to the pattern "%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
attached to the ConsoleAppender
Note that by default Log4j assigns the root logger to Level.ERROR
.
Appenders
Layouts
1 2 3 4 5 6 7 8 9 10 additivity monitorInterval d|date{pattern} T|tid|threadId t|tn|thread|threadName p|level{level=label, level=label, ...} p|level{length=n} p|level{lowerCase=true|false} c{precision} | logger{precision} C{precision} | class{precision}
示例
仅输出至控制台
1 2 3 4 5 6 7 8 9 10 11 12 13 <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="error"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration>
输出至文件,参考一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <?xml version="1.0" encoding="UTF-8"?> <Configuration> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{black} [%style{%t}{bright,blue}] %highlight{%p} %style{%c}{bright,yellow}: %m%n%throwable"/> </Console> <RollingFile name="RollingFile" fileName="${sys:logDir}/log4j2.log" filePattern="${sys:logDir}/logs/$${date:yyyy-MM}/log4j2-%d{-dd-MMMM-yyyy}-%i.log.gz"> <PatternLayout> <pattern>%d{HH:mm:ss.SSS} [%t] %p %c %m%n</pattern> </PatternLayout> <Policies> <OnStartupTriggeringPolicy/> <SizeBasedTriggeringPolicy size="10 MB"/> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> </Appenders> <Loggers> <Root level="DEBUG"> <AppenderRef ref="Console"/> <AppenderRef ref="RollingFile"/> </Root> <Logger name="sendSMS" level="DEBUG"> <AppenderRef ref="Console"/> <AppenderRef ref="RollingFile"/> </Logger> </Loggers> </Configuration>
输出至文件,参考二
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 <?xml version="1.0" encoding="UTF-8"?> <Configuration monitorInterval="100"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{black} [%style{%t}{bright,blue}] %highlight{%p} %style{%c}{bright,yellow}: %m%n%throwable"/> </Console> <RollingFile name="MainRollingFile" fileName="${sys:logDir}/jjzx.log" filePattern="${sys:logDir}/$${date:MM}/main/%d{dd}-jjzx-%i.log"> <PatternLayout charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%t] %p %c %m%n</pattern> </PatternLayout> <Policies> <OnStartupTriggeringPolicy/> <SizeBasedTriggeringPolicy size="10 MB"/> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> <!-- 缓存管理 --> <RollingFile name="CacheRedisUtilsRollingFile" fileName="${sys:logDir}/cache-redisUtils.log" filePattern="${sys:logDir}/$${date:MM}/cache/%d{dd}-redisUtils-%i.log"> <PatternLayout charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%t] %p %c %m%n</pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="10 MB"/> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> <!-- 查询日志 --> <RollingFile name="SearchLogScoreRollingFile" fileName="${sys:logDir}/searchLog-score.log" filePattern="${sys:logDir}/$${date:MM}/searchLog/%d{dd}-score-%i.log"> <PatternLayout charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%t] %p %c %m%n</pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="10 MB"/> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> <RollingFile name="SearchLogOtherScoreRollingFile" fileName="${sys:logDir}/searchLog-otherScore.log" filePattern="${sys:logDir}/$${date:MM}/searchLog/%d{dd}-otherScore-%i.log"> <PatternLayout charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%t] %p %c %m%n</pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="10 MB"/> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> <RollingFile name="SearchLogVolunteerRollingFile" fileName="${sys:logDir}/searchLog-volunteer.log" filePattern="${sys:logDir}/$${date:MM}/searchLog/%d{dd}-volunteer-%i.log"> <PatternLayout charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%t] %p %c %m%n</pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="10 MB"/> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> <RollingFile name="SearchLogAdmissionRollingFile" fileName="${sys:logDir}/searchLog-admission.log" filePattern="${sys:logDir}/$${date:MM}/searchLog/%d{dd}-admission-%i.log"> <PatternLayout charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%t] %p %c %m%n</pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="10 MB"/> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> <!-- 推送日志 --> <RollingFile name="PushLogScoreRollingFile" fileName="${sys:logDir}/pushLog-score.log" filePattern="${sys:logDir}/$${date:MM}/pushLog/%d{dd}-score.log"> <PatternLayout charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%t] %p %c %m%n</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> <!-- 后台操作日志 --> <RollingFile name="BgRequestRollingFile" fileName="${sys:logDir}/bg-request.log" filePattern="${sys:logDir}/$${date:MM}/bg/%d{dd}-request.log"> <PatternLayout charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%t] %p %c %m%n</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> <RollingFile name="BgLoginRollingFile" fileName="${sys:logDir}/bg-login.log" filePattern="${sys:logDir}/$${date:MM}/bg/%d{dd}-login.log"> <PatternLayout charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%t] %p %c %m%n</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> <RollingFile name="BgGuanggaoRollingFile" fileName="${sys:logDir}/bg-guanggao.log" filePattern="${sys:logDir}/$${date:MM}/bg/%d{dd}-guanggao.log"> <PatternLayout charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%t] %p %c %m%n</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> <RollingFile name="BgZixunRollingFile" fileName="${sys:logDir}/bg-zixun.log" filePattern="${sys:logDir}/$${date:MM}/bg/%d{dd}-zixun.log"> <PatternLayout charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%t] %p %c %m%n</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> </Appenders> <Loggers> <Root level="INFO"> <AppenderRef ref="Console"/> <AppenderRef ref="MainRollingFile"/> </Root> <!-- 缓存管理 --> <Logger name="cache.RedisUtils" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="CacheRedisUtilsRollingFile"/> </Logger> <!-- 查询日志 --> <Logger name="searchLog.score" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="SearchLogScoreRollingFile"/> </Logger> <Logger name="searchLog.otherScore" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="SearchLogOtherScoreRollingFile"/> </Logger> <Logger name="searchLog.volunteer" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="SearchLogVolunteerRollingFile"/> </Logger> <Logger name="searchLog.admission" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="SearchLogAdmissionRollingFile"/> </Logger> <!-- 推送日志 --> <Logger name="pushLog.score" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="PushLogScoreRollingFile"/> </Logger> <!-- 后台操作日志 --> <Logger name="bg.Request" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="BgRequestRollingFile"/> </Logger> <Logger name="bg.Login" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="BgLoginRollingFile"/> </Logger> <Logger name="bg.Guanggao" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="BgGuanggaoRollingFile"/> </Logger> <Logger name="bg.Zixun" level="INFO" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="BgZixunRollingFile"/> </Logger> </Loggers> </Configuration>