java_log4j----java 日志管理

  1 log4j 有三个主要组件:
  2 
  3 
  4 
  5  
  6 类别Loggers------消息类型和优先级 
  7 
  8 
  9  
 10 附加目的地Appenders-------在哪里报告消息 
 11 
 12 
 13  
 14 布局Layouts------控制如何格式化消息 
 15 
 16 
 17 
 18 这三个组件共同合作,使开发者可以根据消息类型和优先级记录消息,并在运行时控制如何格式化消息以及在哪里报告消息.
 19 
 20 
 21 Log4j基本使用方法
 22 
 23 
 24 Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
 25 
 26 
 27 定义配置文件
 28 
 29 
 30 Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)。下面我们介绍使用Java特性文件做为配置文件的方法:
 31 
 32 
 33 
 34  
 35 配置根Logger,其语法为: 
 36 
 37 log4j.rootLogger = [ level ] , appenderName, appenderName, …
 38 
 39 其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 
 40 appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。 
 41  
 42 
 43 
 44  
 45 配置日志信息输出目的地Appender,其语法为 
 46 
 47 log4j.appender.appenderName = fully.qualified.name.of.appender.class  log4j.appender.appenderName.option1 = value1  …  log4j.appender.appenderName.option = valueN
 48 其中,Log4j提供的appender有以下几种: 
 49 org.apache.log4j.ConsoleAppender(控制台), 
 50 org.apache.log4j.FileAppender(文件), 
 51 org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), 
 52 org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 
 53  
 54 
 55 
 56  
 57 配置日志信息的格式(布局),其语法为: 
 58 
 59 log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class  log4j.appender.appenderName.layout.option1 = value1  …  log4j.appender.appenderName.layout.option = valueN
 60 其中,Log4j提供的layout有以下几种: 
 61 org.apache.log4j.HTMLLayout(以HTML表格形式布局), 
 62 org.apache.log4j.PatternLayout(可以灵活地指定布局模式), 
 63 org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), 
 64 org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) 
 65  
 66 
 67 
 68 
 69  
 70 
 71 
 72 4.Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: 
 73 
 74 
 75          %m 输出代码中指定的消息
 76 
 77 
 78   %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
 79   %r 输出自应用启动到输出该log信息耗费的毫秒数 
 80   %c 输出所属的类目,通常就是所在类的全名 
 81   %t 输出产生该日志事件的线程名 

 82   %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” 
 83   %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 
 84   %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) 
 85 
 86 
 87  
 88 
 89 
 90 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
 91 
 92 此句与第3行一样。定义名为R的输出端的类型为每天产生一个日志文件。
 93 
 94 
 95 org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),可通过log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过log4j.appender.R.MaxBackupIndex=1设置为保存一个备份文件。 
 96 
 97 8 log4j.appender.R.File=D:\Tomcat 5.5\logs\qc.log
 98 
 99 此句为定义名为R的输出端的文件名为D:\Tomcat 5.5\logs\qc.log
100 
101 可以自行修改。
102 
103 
104 15 log4j.logger.org.apache.commons=ERROR
105 
106 16 log4j.logger.org.apache.struts=WARN
107 
108 这两句是struts的包。
109 
110 17 log4j.logger.org.displaytag=ERROR
111 
112 这句是displaytag的包。(QC问题列表页面所用)
113 
114 18 log4j.logger.org.springframework=DEBUG
115 
116 此句为Spring的包。
117 
118 24 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
119 
120 25 log4j.logger.org.hibernate=DEBUG
121 
122 此两句是hibernate的包。
123 
124 
125 
126 
127 
128 
129 
130  
131 
132 
133 =======================================================
134 
135 
136 在WEB-INF\classes 中新建“log4j.properties”文件,加入以下代码,便能实现将错误信息在后台显示并写入到日志文件“jkpt-two.log”中:
137 
138 
139 log4j.rootLogger=ERROR,THEONE,THETWO
140 
141 
142 ###################
143 # THEONE Appender
144 ###################
145 log4j.appender.THEONE=org.apache.log4j.ConsoleAppender
146 log4j.appender.THEONE.layout=org.apache.log4j.PatternLayout
147 log4j.appender.THEONE.layout.ConversionPattern= %d{ISO8601}-[%p][%C{1}]-%m%n
148 
149 
150 
151 ###################
152 # THETWO Appender
153 ###################
154 log4j.appender.THETWO=org.apache.log4j.DailyRollingFileAppender
155 
156 
157 log4j.appender.THETWO.File=C:/Program Files/Apache Group/Tomcat 5.0/logs/jkpt-two.log
158 log4j.appender.THETWO.File.MaxFileSize=500KB
159 log4j.appender.THETWO.File.MaxBackupIndex=50
160 log4j.appender.THETWO.File.Append=true
161 log4j.appender.THETWO.layout=org.apache.log4j.PatternLayout
162 log4j.appender.THETWO.layout.ConversionPattern= %d{ISO8601}-[%p][%C{1}]-%m%n
163 
164 
165  
166 
167 
168 这段代码的解释如下:
169 
170 
171 log4j.rootLogger=ERROR,THEONE,THETWO   
172 
173 
174 ----表示要获取的是“ERROR”级的信息;分别有两个“处理方式”:THEONE,THETWO   
175 
176 
177 ConsoleAppender,DailyRollingFileAppender
178 
179 
180 ----表示“控制台”和“文件大小到达指定尺寸的时候产生一个新的文件”
181 
182 
183 PatternLayout
184 
185 
186 ----表示“可以灵活地指定布局模式”
187 
188 
189 ConversionPattern
190 
191 
192 ----表示输出的格式
193 
194 
195 log4j.appender.THETWO.File=C:/Program Files/Apache Group/Tomcat 5.0/logs/jkpt-two.log
196 
197 
198 ----表示将信息写入“jkpt-two.log”中。
199 
200 
201 =====================================================
202 
203 
204 二、在代码中使用Log4j
205 
206 
207   1.得到记录器
208 
209 
210   使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为: 
211 
212 
213   public static Logger getLogger( String name) 
214 
215 
216   通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如: 
217 
218 
219   static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )
220 
221 
222   2.读取配置文件 
223 
224 
225   当获得了日志记录器之后,第二步将配置Log4j环境,其语法为:
226 
227 
228   BasicConfigurator.configure (): 自动快速地使用缺省Log4j环境。
229   PropertyConfigurator.configure ( String configFilename) :读取使用Java的特性文件编写的配置文件。
230   DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。
231 
232 
233   3.插入记录信息(格式化日志信息)
234 
235 
236   当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:
237 
238 
239   Logger.debug ( Object message ) ;
240   Logger.info ( Object message ) ;
241   Logger.warn ( Object message ) ;
242   Logger.error ( Object message ) ;
243 
244 
245  
246 
247 
248 在代码中使用Log4j
249 
250 我们在需要输出日志信息的类中做如下的三个工作:
251 
252 1、导入所有需的commongs-logging类:
253 
254 import org.apache.commons.logging.Log;
255 
256 import org.apache.commons.logging.LogFactory;
257 
258 2、在自己的类中定义一个org.apache.commons.logging.Log类的私有静态类成员:
259 
260 private final Log log = LogFactory.getLog(getClass());
261 
262 LogFactory.getLog()方法的参数使用的是当前类的class。
263 
264 3、使用org.apache.commons.logging.Log类的成员方法输出日志信息:
265 
266 if (log.isDebugEnabled())
267 
268 {
269 
270 log.debug("111");
271 
272 }
273 
274 if (log.isInfoEnabled())
275 
276 {
277 
278 log.info("222");
279 
280 }
281 
282 if (log.isWarnEnabled())
283 
284 {
285 
286 log.warn("333");
287 
288 }
289 
290 if (log.isErrorEnabled())
291 
292 {
293 
294 log.error("444");
295 
296 }
297 
298 if (log.isFatalEnabled())
299 
300 {
301 
302 log.fatal("555")
303 
304 }  
305 
306 
307 ==============================
308 
309 
310 ### direct log messages to stdout ###
311 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
312 log4j.appender.stdout.Target=System.out
313 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
314 log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
315 
316 
317 ### direct messages to file hibernate.log ###
318 #log4j.appender.file=org.apache.log4j.FileAppender
319 #log4j.appender.file.File=hibernate.log
320 #log4j.appender.file.layout=org.apache.log4j.PatternLayout
321 #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
322 
323 
324 ### set log levels - for more verbose logging change 'info' to 'debug' ###
325 
326 
327 log4j.rootLogger=info, stdout
328 
329 
330 log4j.logger.net.sf.hibernate=info
331 
332 
333 ### log just the SQL
334 #log4j.logger.net.sf.hibernate.SQL=debug
335 
336 
337 ### log JDBC bind parameters ###
338 log4j.logger.net.sf.hibernate.type=info
339 
340 
341 ### log schema export/update ###
342 log4j.logger.net.sf.hibernate.tool.hbm2ddl=debug
343 
344 
345 ### log cache activity ###
346 #log4j.logger.net.sf.hibernate.cache=debug
347 
348 
349 ### enable the following line if you want to track down connection ###
350 ### leakages when using DriverManagerConnectionProvider ###
351 #log4j.logger.net.sf.hibernate.connection.DriverManagerConnectionProvider=trace

 

posted @ 2013-09-14 15:45  cphmvp  阅读(294)  评论(0编辑  收藏  举报
爬虫在线测试小工具: http://tool.haoshuju.cn/