新知识-log4j日志管理-知识点-配置步骤-实例

来源:互联网 发布:快餐店数据流程图 编辑:程序博客网 时间:2024/06/06 20:27

log4j主要由logger、appender和layout共3大组件构成

logger日志记录器,五种级别:

1:debug(Object)输出调试级别的日志信息,它是所有日志级别中最低的

2:info(Object)输出消息日志,它高于debug级别日志

3:warn(Object)输出警告级别的日志信息,高于info

4:error(Object)输出错误级别的日志信息,高于warn

5:fatal(Object)输出致命错误级别的日志信息,是最高的日志级别


日志输出方法:

1:logger.debug(Object message)例:message="调试日志"

2:logger.info(Object message)例:message="消息日志"

3:logger.warn(Object message)例:message="警告日志"

3:logger.error(Object message)例:message="错误日志(数据库连接失败)"

4:logger.fatal(Object message)例:message="内存不足"


配置日志:log4j.[loggerName]=[loggerLevel],AppenderName,……

1:loggerName:日志名称

2:loggerLevel:日志级别

3:appenderName:日志输出目标,例如,控制台console、文件file、或者以流的方式将日志 信息输出到任何输出地点。


日志继承:所有的日志都继承了rootlogger日志的定义。

例:log4j.logger.onelogger=warn,console

log4j.logger.onelogger.newlogger=,file

newlogger没有定义日志级别,但是继承了onelogger的日志级别。定义了输出目标为文件。


appender接口的实现类

1:org.apache.log4j.ConsoleAppender(控制台)
2org.apache.log4j.FileAppender(文件)
3org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
4org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
5org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

6:org.apache.log4j.net.SMTPAppender(当特定的日志时间发生时,一般是指发生错误或者重大错误时,发送邮件)

7:org.apache.log4j.net.SocketAppender(给远程日志服务器的网络套接字节点发送日志事件LoggingEvent对象)

8:org.apache.log4j.net.SocketHubAppender(给远程日志服务器群的网络套接字节点发送日志事件LoggingEvent对象

9:org.apache.log4j.net.SyslogAppender(给远程异步日志记录的后台程序(daemon)发送消息)

10:org.apache.log4j.net.TalnetAppender(一个专用于向只读网络套接字发送消息的log4jappender)


1)ConsoleAppender选项属性 
# -Threshold = DEBUG:指定日志消息的输出最低层次 
# -ImmediateFlush = TRUE:默认值是true,所有的消息都会被立即输出 
# -Target = System.err:默认值System.out,输出到控制台(err为红色,out为黑色)

2)FileAppender选项属性 
# -Threshold = INFO:指定日志消息的输出最低层次 
# -ImmediateFlush = TRUE:默认值是true,所有的消息都会被立即输出 
# -File = C:\log4j.log:指定消息输出到C:\log4j.log文件 
# -Append = FALSE:默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容 
# -Encoding = UTF-8:可以指定文件编码格式

3)DailyRollingFileAppender选项属性 
# -Threshold = WARN:指定日志消息的输出最低层次 
# -ImmediateFlush = TRUE:默认值是true,所有的消息都会被立即输出 
# -File = C:\log4j.log:指定消息输出到C:\log4j.log文件 
# -Append = FALSE:默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容 
# -DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。还可以按用以下参数: 
#              '.'yyyy-MM:每月 
#              '.'yyyy-ww:每周 
#              '.'yyyy-MM-dd:每天 
#              '.'yyyy-MM-dd-a:每天两次 
#              '.'yyyy-MM-dd-HH:每小时 
#              '.'yyyy-MM-dd-HH-mm:每分钟 
# -Encoding = UTF-8:可以指定文件编码格式

4)RollingFileAppender选项属性 
# -Threshold = ERROR:指定日志消息的输出最低层次 
# -ImmediateFlush = TRUE:默认值是true,所有的消息都会被立即输出 
# -File = C:/log4j.log:指定消息输出到C:/log4j.log文件 
# -Append = FALSE:默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容 
# -MaxFileSize = 100KB:后缀可以是KB,MB,GB.在日志文件到达该大小时,将会自动滚动.如:log4j.log.1 
# -MaxBackupIndex = 2:指定可以产生的滚动文件的最大数 
# -Encoding = UTF-8:可以指定文件编码格式


Layout子类

1:org.apache.log4j.HTMLLayout(以HTML表格形式布局) 
2:org.apache.log4j.PatternLayout(可以灵活地指定布局模式) 
3:org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串) 
4:org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) 
5:org.apache.log4j.xml.XMLLayout(以XML形式布局) 


1)HTMLLayout选项属性 
# -LocationInfo = TRUE:默认值false,输出Java文件名称和行号 
# -Title=Struts Log Message:默认值 Log4J Log Messages

2)PatternLayout选项属性 
# -ConversionPattern = %m%n:格式化指定的消息

3)XMLLayout选项属性 
# -LocationInfo = TRUE:默认值false,输出java文件名称和行号


转换字符表

 -X号: X信息输出时左对齐;
 %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
 %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10         月18日 22:10:28,921
 %r: 输出自应用启动到输出该log信息耗费的毫秒数
 %c: 输出日志信息所属的类目,通常就是所在类的全名
 %t: 输出产生该日志事件的线程名
 %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main           (TestLog4.java:10)
 %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
 %%: 输出一个"%"字符
 %F: 输出日志消息产生时所在的文件名称
 %L: 输出代码中的行号
 %m: 输出代码中指定的消息,产生的日志具体信息
 %n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行

 %20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
 %-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
 %.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
 %20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。


实例代码(Javaee动态网页项目日志管理):

1.log4j.properties(文件应该放在webcontent目录下,url路径就是文件名,其他目录下,以此类推)

#Loggerlog4j.rootLogger=WARN,consolelog4j.logger.onelogger=debug,filelog4j.logger.onelogger.newlogger=,file #Appenderlog4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.file=org.apache.log4j.RollingFileAppenderlog4j.appender.file.File=c:\log.htmlog4j.appender.file.MaxFileSize=10KBlog4j.appender.file.MaxBackupIndex=3#Layoutlog4j.appender.console.layout=org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern=%t %p - %m%nlog4j.appender.file.layout=org.apache.log4j.HTMLLayout
2.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@page import="org.apache.log4j.*"%><jsp:directive.page import="java.util.Date" /><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><style type="text/css">body {FONT-SIZE: 9pt;FONT-FAMILY: 宋体}</style></head><body><%Logger onelogger = Logger.getLogger("onelogger");Logger newlogger = Logger.getLogger("onelogger.newLogger");String path = getServletContext().getRealPath("log4j.properties");PropertyConfigurator.configure(path);onelogger.debug("调试:\t当前日期是" + new Date().toString() + "Log4J初始化完毕");%><TABLE style="WIDTH: 755px" cellSpacing=0 cellPadding=0 width=757><TR><TD colSpan=3><TABLEstyle="BACKGROUND-IMAGE: url(images/head.jpg); WIDTH: 755px; HEIGHT: 150px"cellSpacing=0 cellPadding=0><TR><TDstyle="VERTICAL-ALIGN: text-top; WIDTH: 80px; HEIGHT: 115px; TEXT-ALIGN: right"colSpan=5></TD></TR><TR><TD>      ◎ 首 页   ◎博客文章  ◎ 博客注册</TD></TR></TABLE></TD></TR><TR><TDstyle="BACKGROUND-IMAGE: url(images/bg.jpg); VERTICAL-ALIGN: middle; HEIGHT: 450px; TEXT-ALIGN: center"colSpan=3><TABLE style="WIDTH: 224px" height=304 cellSpacing=0 cellPadding=0align="center"><TBODY><TR><TD style="WIDTH: 368px; HEIGHT: 21px; TEXT-ALIGN: center"height=29><STRONG><SPAN style="COLOR: #993300">用户注册协议</SPAN></STRONG></TD></TR><TR><TD style="WIDTH: 368px; HEIGHT: 302px" rowSpan=2><%onelogger.debug("开始读取注册协议信息");%><TABLEstyle="BORDER-RIGHT: black thin solid; BORDER-TOP: black thin solid; BORDER-LEFT: black thin solid; WIDTH: 369px; BORDER-BOTTOM: black thin solid"align=center><TR><TD width="354" colSpan=4 rowSpan=4style="HEIGHT: 15px; TEXT-ALIGN: left;">    为维护网上公共秩序和社会稳定,请您自觉遵守以下条款:<BR> 为了更好的管理和维护网站,请您自觉遵守以下条款:<p>(一)不得利用本网站进行商业广告宣传; <br> (二)不得利用本网站发送非法文章;<br>(三)不得利用本网站进行上传非法图片; <br> (四)互相尊重,对自己的言论和行为负责; <br>(五)普通用户欲删除文章、评论、图片等信息,请与管理员联系;<br>(六)本网站版权归明日科技公司,不得对本网站进行转载或作为私用。</p><p><br> <br></p></TD></TR><TR></TR><TR></TR><TR></TR><TR><TD style="HEIGHT: 8px; TEXT-ALIGN: center" colSpan=4><INPUTid=Button1 type=submit value=同意以上条款>   <INPUTid=Button2 type=submit value=不同意></TD></TR><%onelogger.debug("注册协议信息读取完毕");%></TABLE></TD></TR><TR></TR></TBODY></TABLE></TD></TR><TR><TD align="center" background=images/footer.jpg colSpan=3 height=82><%onelogger.info("读取版权消息");%> 欢迎访问博客网 请使用IE 6.0 在1024×768分辨率下浏览本网站<BR> CopyRight@ 2006明日科技开发 <%onelogger.info("版权消息读取完毕");%></TD></TR></TBODY></TABLE><%onelogger.error("数据库关闭失败");onelogger.fatal("系统内存不足,无法继续完成注册。");%></body></html>

结果展示



0 0
原创粉丝点击