此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理。希望能对初学 Java 编程的亲们有所帮助。若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-1-30 13:54:02,请知悉。

所需的 jar 包下载链接为:http://yunpan.cn/cKE56sxqtQCfP  访问密码 63d8

有关 Log4J 日志文件中日志级别及文件配置的详细情况,在 Log4J 的配置文件(xml、properties)中有详细的介绍,敬请参阅!

  • xml 配置文件
  1 <?xml version="1.0" encoding="UTF-8" ?>  
  2 <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  3 <!-- ========================== 日志输出等级  ================================ -->
  4 <!--   OFF:最高等级, 用于关闭所有日志记录  -->
  5 <!-- FATAL:输出严重级别的消息 -->
  6 <!-- ERROR:输出错误级别的消息 -->
  7 <!--  WARN:输出警告级别的消息 -->
  8 <!--  INFO:输出信息级别的消息 -->
  9 <!-- DEBUG:输出调试级别的消息 -->
 10 <!-- TRACE:输出跟踪级别的消息 -->
 11 <!--   ALL:最低等级, 用于打开所有日志记录 -->
 12 <!-- 只有当输出日期的级别大于或等于为日志配置器配置的日志级别时, 这个方法才会执行. 指定日志器的日志级别, 不同的日志器会实现不同的日志输出方案 -->
 13 
 14 <!-- ========================== 自定义输出格式说明 ================================ -->
 15 <!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL -->
 16 <!-- %r 输出自应用启动到输出该log信息耗费的毫秒数 -->
 17 <!-- %c 输出所属的类目,通常就是所在类的全名 -->
 18 <!-- %t 输出产生该日志事件的线程名 -->
 19 <!-- %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” -->
 20 <!-- %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 -->
 21 <!-- %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) -->
 22 <!-- ========================================================================== -->
 23 
 24 <!-- ========================== 输出方式说明================================ -->
 25 <!-- Log4j提供的appender有以下几种: -->
 26 <!-- org.apache.log4j.ConsoleAppender(控制台), -->
 27 <!-- org.apache.log4j.FileAppender(文件), -->
 28 <!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), -->
 29 <!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), -->
 30 <!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) -->
 31 <!-- ========================================================================== -->
 32 
 33 <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
 34     <!-- 系统运行日志 {TRACE, ERROR} -->
 35     <appender name="InfoConsole" class="org.apache.log4j.ConsoleAppender">
 36         <!-- 不进行缓存, 直接输出 -->
 37         <param name="ImmediateFlush" value="true"></param>
 38         <!-- 指定输出控制台, 默认情况下是 System.out -->
 39         <param name="Target" value="System.err"></param>
 40         <!-- 设置输出文件项目和格式 -->
 41         <layout class="org.apache.log4j.PatternLayout">
 42             <param name="ConversionPattern" value="{InfoConsole} - %d - %-5p - [%F] [%t] [%c:%L] - %m%n" />
 43         </layout>
 44 
 45         <!--限制输出级别 -->
 46         <filter class="org.apache.log4j.varia.LevelRangeFilter">
 47             <param name="LevelMax" value="ERROR" ></param>
 48             <param name="LevelMin" value="TRACE" ></param>
 49         </filter>
 50     </appender>
 51 
 52     <!-- 系统运行的错误日志 {ERROR, FATAL}, 单一 -->
 53     <appender name="SysRunningErrorLog" class="org.apache.log4j.FileAppender">
 54         <!-- 设置File参数:日志输出文件名 -->
 55         <param name="File" value="logs/SysRunningErrorLog.log" ></param>
 56         <!-- 设置在重新启动服务时,在原有日志的基础添加新日志 -->
 57         <param name="Append" value="true" ></param>
 58         
 59         <layout class="org.apache.log4j.PatternLayout">
 60             <param name="ConversionPattern" value="{SysRunningErrorLog} - %d - %-5p - [%F] [%t] [%c:%L] - %m%n" ></param>
 61         </layout>
 62         
 63         <filter class="org.apache.log4j.varia.LevelRangeFilter">
 64             <param name="LevelMax" value="FATAL" ></param>
 65             <param name="LevelMin" value="ERROR" ></param>
 66         </filter>
 67     </appender>
 68     
 69     <!-- 系统运行的调试日志 {DEBUG}, 大小-->
 70     <appender name="SysRunningDebugLog" class="org.apache.log4j.RollingFileAppender">
 71         <param name="File" value="logs/SysRunningDebugLog.log" ></param>
 72         <param name="Append" value="true" ></param>
 73         <!-- 设置文件大小 -->
 74         <param name="MaxFileSize" value="5MB" ></param>
 75         <!-- 设置文件备份 -->
 76         <param name="MaxBackupIndex" value="21" ></param>
 77         <layout class="org.apache.log4j.PatternLayout">
 78             <param name="ConversionPattern" value="{SysRunningDebugLog} - %d - %-5p - [%F] [%t] [%c:%L] - %m%n" ></param>
 79         </layout>
 80         
 81         <filter class="org.apache.log4j.varia.LevelRangeFilter">
 82             <param name="LevelMax" value="DEBUG" ></param>
 83             <param name="LevelMin" value="DEBUG" ></param>
 84         </filter>
 85     </appender>
 86     
 87     <!-- 系统运行的用户日志 {INFO, WARN}, 每天, LOG -->
 88     <appender name="SysRunCustUseLog" class="org.apache.log4j.DailyRollingFileAppender">
 89         <param name="File" value="logs/SysRunCustUseLog.log" ></param>
 90         <param name="Append" value="true" ></param>
 91         <param name="ImmediateFlush" value="true" ></param>
 92         <param name="DatePattern" value="'-'yyyyMMdd'.log'" ></param>
 93         <layout class="org.apache.log4j.PatternLayout">
 94             <param name="ConversionPattern" value="{SysRunCustUseLog} - %d - %-5p - [%F] [%t] [%c:%L] - %m%n" ></param>
 95         </layout>
 96         
 97         <filter class="org.apache.log4j.varia.LevelRangeFilter">
 98             <param name="LevelMax" value="WARN" ></param>
 99             <param name="LevelMin" value="INFO" ></param>
100         </filter>
101     </appender>
102     
103     <!-- 系统运行的用户日志 {INFO, WARN}, 每天, HTM -->
104     <appender name="SysRunCustUseLogHtm" class="org.apache.log4j.DailyRollingFileAppender">
105         <param name="File" value="logs/SysRunCustUseLogHtm.html" ></param>
106         <param name="Append" value="true" ></param>
107         <param name="ImmediateFlush" value="true" ></param>
108         <param name="DatePattern" value="'-'yyyyMMdd'.html'" ></param>
109         <layout class="org.apache.log4j.HTMLLayout">
110             <param name="Title" value="Logs info for the current running system from Log4J Message"></param>
111         </layout>
112         
113         <filter class="org.apache.log4j.varia.LevelRangeFilter">
114             <param name="LevelMax" value="WARN" ></param>
115             <param name="LevelMin" value="INFO" ></param>
116         </filter>
117     </appender>
118     
119     <!-- 系统运行的用户日志 {INFO, WARN} 每天, XML -->
120     <appender name="SysRunCustUseLogXml" class="org.apache.log4j.DailyRollingFileAppender">
121         <param name="File" value="logs/SysRunCustUseLogXml.xml"></param>
122         <param name="DatePattern" value="'-'yyyyMMdd'.xml'"></param>
123         <layout class="org.apache.log4j.xml.XMLLayout"></layout>
124         
125         <filter class="org.apache.log4j.varia.LevelRangeFilter">
126             <param name="LevelMax" value="WARN"></param>
127             <param name="LevelMin" value="INFO"></param>
128         </filter>
129     </appender> 
130     
131     <!-- 系统运行的所有日志 {TRACE, FATAL} -->
132     <!-- MySQL, sqlserver JDBC 连接实例
133         <param name="URL" value="jdbc:mysql://127.0.0.1:3306/test" ></param>
134         <param name="driver" value="com.mysql.jdbc.Driver" ></param>
135         <param name="URL" value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Aaron" ></param>
136         <param name="driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" ></param>
137     -->
138     <!-- 
139     <appender name="SysRunInfoDB" class="org.apache.log4j.jdbc.JDBCAppender">
140         <param name="URL" value="jdbc:oracle:thin:@127.0.0.1:1521:aaron" ></param>
141         <param name="driver" value="oracle.jdbc.driver.OracleDriver" ></param>
142         <param name="user" value="hr" ></param>
143         <param name="password" value="hr" ></param>
144         <layout class="org.apache.log4j.PatternLayout">
145             <param name="ConversionPattern" value="INSERT INTO sysRunInfoLog4J (appenderName, logTime, infoLevel, fileName, threadName, className, lineNumber, infoMsg) VALUES ('SysRunInfoDB', '%d', '%p', '%F', '%t', '%c', '%L', '%m')"></param>
146         </layout>
147         
148         <filter class="org.apache.log4j.varia.LevelRangeFilter">
149             <param name="LevelMax" value="FATAL"></param>
150             <param name="LevelMin" value="TRACE"></param>
151         </filter>
152     </appender>
153     -->
154     
155     <!-- 发邮件(只有ERROR时才会发送!) -->
156     <!-- <appender name="adMail" class="org.apache.log4j.net.SMTPAppender">
157         <param name="threshold" value="debug"></param>
158         <param name="BufferSize" value="512"></param>
159         <param name="From" value="test@163.com"></param>
160         <param name="SMTPHost" value="smtp.163.com"></param>
161         <param name="Subject" value="Logs info for the current running system from Log4J Message"></param>
162         <param name="To" value="test@163.com"></param>
163         <param name="SMTPUsername" value="test"></param>
164         <param name="SMTPPassword" value="test"></param>
165         <layout class="org.apache.log4j.PatternLayout">
166             <param name="ConversionPattern" value="{adMail} - %d - %-5p - [%F] [%t] [%c:%L] - %m%n"></param>
167         </layout>
168         
169         <filter class="org.apache.log4j.varia.LevelRangeFilter">
170             <param name="LevelMax" value="FATAL"></param>
171             <param name="LevelMin" value="ERROR"></param>
172         </filter>
173     </appender> -->
174 
175     <!--- 异步测试,当日志达到缓存区大小时候执行所包的appender -->
176     <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
177         <param name="BufferSize" value="256"></param>
178         <appender-ref ref="SysRunningDebugLog"></appender-ref>
179         <appender-ref ref="SysRunCustUseLog"></appender-ref>
180         <appender-ref ref="SysRunCustUseLogHtm"></appender-ref>
181         <appender-ref ref="SysRunCustUseLogXml"></appender-ref>
182     </appender>
183 
184     <!--通过<logger>的定义可以将各个包中的类日志输出到不同的日志文件中 -->
185     <!--<logger name="test.log4j" additivity="false">
186         <level value="INFO"></level>
187         <appender-ref ref="InfoConsole"></appender-ref>
188         <appender-ref ref="adDatabase"></appender-ref>
189         <appender-ref ref="SysRunningErrorLog"></appender-ref>
190     </logger>-->
191     
192     <!--通过<category></category>的定义可以将各个包中的类日志输出到不同的日志文件中 -->
193     <!--<category name="test.log4j.JavaLog4J.test" additivity="false">
194         <level value="DEBUG"></level>
195         <appender-ref ref="adDailyLogFile"></appender-ref>
196     </category>-->
197 
198     <!-- 控制输出appender项 -->
199     <root>
200         <!-- 控制日志输出的最低级别, 则appender输出日志的最低级别为priority|LevelMin|logger|category中的高级别 -->
201         <priority value="ALL"></priority>
202         <!-- 系统运行日志 {TRACE, ERROR} -->
203         <appender-ref ref="InfoConsole"></appender-ref>
204         <!-- 系统运行的错误日志 {ERROR, FATAL}, 单一 -->
205         <appender-ref ref="SysRunningErrorLog"></appender-ref>
206         <!-- 系统运行的调试日志 {DEBUG}, 大小-->
207         <appender-ref ref="SysRunningDebugLog"></appender-ref>
208         <!-- 系统运行的用户日志 {INFO, WARN}, 每天, LOG -->
209         <appender-ref ref="SysRunCustUseLog"></appender-ref>
210         <!-- 系统运行的用户日志 {INFO, WARN}, 每天, HTM -->
211         <appender-ref ref="SysRunCustUseLogHtm"></appender-ref>
212         <!-- 系统运行的用户日志 {INFO, WARN} 每天, XML -->
213         <appender-ref ref="SysRunCustUseLogXml"></appender-ref>
214         <!-- 系统运行的所有日志 {TRACE, FATAL}, 运行此配置, 需要配置相应的数据库信息 -->
215         <!-- <appender-ref ref="SysRunInfoDB"></appender-ref> -->
216     </root>
217 </log4j:configuration>  
Log4J XML 文件配置文件详情,内含日志级别及文件输出等详解

相关文章:

猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-02-25
  • 2021-11-27
  • 2021-12-03
相关资源
相似解决方案