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

    xiaoxiao2021-03-25  103

    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"输出日志信息换行

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

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

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

    #Logger log4j.rootLogger=WARN,console log4j.logger.onelogger=debug,file log4j.logger.onelogger.newlogger=,file #Appender log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=c:\log.htm log4j.appender.file.MaxFileSize=10KB log4j.appender.file.MaxBackupIndex=3 #Layout log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%t %p - %m%n log4j.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> <TABLE style="BACKGROUND-IMAGE: url(images/head.jpg); WIDTH: 755px; HEIGHT: 150px" cellSpacing=0 cellPadding=0> <TR> <TD style="VERTICAL-ALIGN: text-top; WIDTH: 80px; HEIGHT: 115px; TEXT-ALIGN: right" colSpan=5></TD> </TR> <TR> <TD>      ◎ 首 页   ◎ 博客文章  ◎ 博客注册</TD> </TR> </TABLE> </TD> </TR> <TR> <TD style="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=0 align="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("开始读取注册协议信息"); %> <TABLE style="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=4 style="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><INPUT id=Button1 type=submit value=同意以上条款>   <INPUT id=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> 结果展示

    转载请注明原文地址: https://ju.6miu.com/read-8939.html

    最新回复(0)