收藏 分销(赏)

log4j学习重点笔记.doc

上传人:快乐****生活 文档编号:3025478 上传时间:2024-06-13 格式:DOC 页数:19 大小:93.04KB 下载积分:8 金币
下载 相关 举报
log4j学习重点笔记.doc_第1页
第1页 / 共19页
log4j学习重点笔记.doc_第2页
第2页 / 共19页


点击查看更多>>
资源描述
Log4J配备文献(Configuration File)就是用来设立记录器级别、存储器和布局,它可接key=value格式设立或xml格式设立信息。通过配备,可以创立出Log4J运营环境。 1. 配备文献 Log4J配备文献基本格式如下: #配备根Logger log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  … #配备日记信息输出目地Appender log4j.appender.appenderName  =  fully.qualified.name.of.appender.class    log4j.appender.appenderName.option1  =  value1    …    log4j.appender.appenderName.optionN  =  valueN  #配备日记信息格式(布局) log4j.appender.appenderName.layout  =  fully.qualified.name.of.layout.class    log4j.appender.appenderName.layout.option1  =  value1    …    log4j.appender.appenderName.layout.optionN  =  valueN  其中 [level] 是日记输出级别,共有5级: FATAL       0   ERROR      3   WARN       4   INFO         6   DEBUG      7  Appender 为日记输出目地,Log4j提供appender有如下几种: org.apache.log4j.ConsoleAppender(控制台), org.apache.log4j.FileAppender(文献), org.apache.log4j.DailyRollingFileAppender(每天产生一种日记文献), org.apache.log4j.RollingFileAppender(文献大小到达指定尺寸时候产生一种新文献), org.apache.log4j.WriterAppender(将日记信息以流格式发送到任意指定地方) Layout:日记输出格式,Log4j提供layout有如下几种: org.apache.log4j.HTMLLayout(以HTML表格形式布局), org.apache.log4j.PatternLayout(可以灵活地指定布局模式), org.apache.log4j.SimpleLayout(包括日记信息级别和信息字符串), org.apache.log4j.TTCCLayout(包括日记产生时间、线程、类别等等信息) 打印参数: Log4J采用类似C语言中printf函数打印格式格式化日记信息,如下:     %m   输出代码中指定消息   %p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL    %r   输出自应用启动到输出该log信息耗费毫秒数    %c   输出所属类目,普通就是所在类全名    %t   输出产生该日记事件线程名    %n   输出一种回车换行符,Windows平台为“/r/n”,Unix平台为“/n”    %d   输出日记时间点日期或时间,默认格式为ISO8601,也可以在其后指定格式,例如:%d{yyy MMM dd HH:mm:ss ,SSS},输出类似:10月18日  22 : 10 : 28 , 921     %l   输出日记事件发生位置,涉及类目名、发生线程,以及在代码中行数。举例:Testlog4.main(TestLog4.java: 10 )  2. 在代码中初始化Logger:  1)在程序中调用BasicConfigurator.configure()办法:给根记录器增长一种ConsoleAppender,输出格式通过PatternLayout设为"%-4r [%t] %-5p %c %x - %m%n",尚有根记录器默认级别是Level.DEBUG.  2)配备放在文献里,通过命令行参数传递文献名字,通过PropertyConfigurator.configure(args[x])解析并配备; 3)配备放在文献里,通过环境变量传递文献名等信息,运用log4j默认初始化过程解析并配备; 4)配备放在文献里,通过应用服务器配备传递文献名等信息,运用一种特殊servlet来完毕配备。 3. 为不同 Appender 设立日记输出级别: 当调试系统时,咱们往往注意只是异常级别日记输出,但是普通所有级别输出都是放在一种文献里,如果日记输出级别是BUG!?那就慢慢去找吧。 这时咱们也许会想要是能把异常信息单独输出到一种文献里该多好啊。固然可以,Log4j已经提供了这样功能,咱们只需要在配备中修改AppenderThreshold 就能实现,例如下面例子: [配备文献]  ### set log levels ### log4j.rootLogger = debug ,  stdout ,  D ,  E ### 输出到控制台 ### 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{ABSOLUTE} %5p %c{ 1 }:%L - %m%n ### 输出到日记文献 ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = logs/log.log log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上日记 log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n ### 保存异常信息到单独文献 ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = logs/error.log ## 异常日记文献名 log4j.appender.D.Append = true log4j.appender.D.Threshold = ERROR ## 只输出ERROR级别以上日记!!! log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n [代码中使用]   public   class  TestLog4j  {      public   static   void  main(String[] args)  {         PropertyConfigurator.configure( " D:/Code/conf/log4j.properties " );         Logger logger  =  Logger.getLogger(TestLog4j. class );         logger.debug( " debug " );         logger.error( " error " );     }  } 运营一下,看看异常信息是不是保存在了一种单独文献error.log中         log4j.properties 使用 一.参数意义阐明 输出级别种类 ERROR、WARN、INFO、DEBUG ERROR 为严重错误 重要是程序错误 WARN 为普通警告,例如session丢失 INFO 为普通要显示信息,例如登录登出 DEBUG 为程序调试信息 配备日记信息输出目地 log4j.appender.appenderName = fully.qualified.name.of.appender.class 1.org.apache.log4j.ConsoleAppender(控制台) 2.org.apache.log4j.FileAppender(文献) 3.org.apache.log4j.DailyRollingFileAppender(每天产生一种日记文献) 4.org.apache.log4j.RollingFileAppender(文献大小到达指定尺寸时候产生一种新文献) 5.org.apache.log4j.WriterAppender(将日记信息以流格式发送到任意指定地方) 配备日记信息格式 log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class 1.org.apache.log4j.HTMLLayout(以HTML表格形式布局), 2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式), 3.org.apache.log4j.SimpleLayout(包括日记信息级别和信息字符串), 4.org.apache.log4j.TTCCLayout(包括日记产生时间、线程、类别等等信息) 控制台选项 Threshold=DEBUG:指定日记消息输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有消息都会被及时输出。 Target=System.err:默认状况下是:System.out,指定输出控制台 FileAppender 选项 Threshold=DEBUF:指定日记消息输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有消息都会被及时输出。 File=mylog.txt:指定消息输出到mylog.txt文献。 Append=false:默认值是true,即将消息增长到指定文献中,false指将消息覆盖指定文献内容。 RollingFileAppender 选项 Threshold=DEBUG:指定日记消息输出最低层次。 ImmediateFlush=true:默认值是true,意谓着所有消息都会被及时输出。 File=mylog.txt:指定消息输出到mylog.txt文献。 Append=false:默认值是true,即将消息增长到指定文献中,false指将消息覆盖指定文献内容。 MaxFileSize=100KB:后缀可以是KB,MB 或者是 GB. 在日记文献到达该大小时,将会自动滚动,即将本来内容移到mylog.log.1文献。 MaxBackupIndex=2:指定可以产生滚动文献最大数。 log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n 日记信息格式中几种符号所代表含义:  -X号:X信息输出时左对齐;  %p:输出日记信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,  %d:输出日记时间点日期或时间,默认格式为ISO8601,也可以在其后指定格式,例如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似: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"输出日记信息换行  可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本对齐方式。如:  1)%20c:指定输出category名称,最小宽度是20,如果category名称不大于20话,默认状况下右对齐。  2)%-20c:指定输出category名称,最小宽度是20,如果category名称不大于20话,"-"号指定左对齐。  3)%.30c:指定输出category名称,最大宽度是30,如果category名称不不大于30话,就会将左边多余字符截掉,但不大于30话也不会有空格。  4)%20.30c:如果category名称不大于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出字符截掉。 二.文献配备Sample1 log4j.rootLogger=DEBUG,A1,R #log4j.rootLogger=INFO,A1,R # ConsoleAppender 输出 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n # File 输出 一天一种文献,输出途径可以定制,普通在根途径下 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=blog_log.txt log4j.appender.R.MaxFileSize=500KB log4j.appender.R.MaxBackupIndex=10 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n 文献配备Sample2 下面给出Log4J配备文献实现了输出到控制台,文献,回滚文献,发送日记邮件,输出到数据库日记表,自定义标签等全套功能。 log4j.rootLogger=DEBUG,CONSOLE,A1,im  #DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE log4j.addivity.org.apache=true ###################  # Console Appender  ###################  log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender  log4j.appender.Threshold=DEBUG  log4j.appender.CONSOLE.Target=System.out  log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout  log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n  #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n #####################  # File Appender  #####################  log4j.appender.FILE=org.apache.log4j.FileAppender  log4j.appender.FILE.File=file.log  log4j.appender.FILE.Append=false  log4j.appender.FILE.layout=org.apache.log4j.PatternLayout  log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n  # Use this layout for LogFactor 5 analysis ########################  # Rolling File  ########################  log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender  log4j.appender.ROLLING_FILE.Threshold=ERROR  log4j.appender.ROLLING_FILE.File=rolling.log  log4j.appender.ROLLING_FILE.Append=true  log4j.appender.ROLLING_FILE.MaxFileSize=10KB  log4j.appender.ROLLING_FILE.MaxBackupIndex=1  log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout  log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ####################  # Socket Appender  ####################  log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender  log4j.appender.SOCKET.RemoteHost=localhost  log4j.appender.SOCKET.Port=5001  log4j.appender.SOCKET.LocationInfo=true  # Set up for Log Facter 5  log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout  log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n ########################  # Log Factor 5 Appender  ########################  log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender  log4j.appender.LF5_APPENDER.MaxNumberOfRecords= ########################  # SMTP Appender  #######################  log4j.appender.MAIL=.SMTPAppender  log4j.appender.MAIL.Threshold=FATAL  log4j.appender.MAIL.BufferSize=10  log4j.appender.MAIL.From= log4j.appender.MAIL.SMTPHost=  log4j.appender.MAIL.Subject=Log4J Message  log4j.appender.MAIL.To= log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout  log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ########################  # JDBC Appender  #######################  log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender  log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test  log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver  log4j.appender.DATABASE.user=root  log4j.appender.DATABASE.password=  log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')  log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout  log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender  log4j.appender.A1.File=SampleMessages.log4j  log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'  log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout ###################  #自定义Appender  ###################  log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender log4j.appender.im.host =   log4j.appender.im.username = username  log4j.appender.im.password = password  log4j.appender.im.recipient =  log4j.appender.im.layout=org.apache.log4j.PatternLayout  log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n 三.高档使用 实验目:  1.把FATAL级错误写入NT日记  2. WARN,ERROR,FATAL级错误发送email告知管理员  3.其她级别错误直接在后台输出 实验环节:  输出到NT日记  1.把Log4j压缩包里NTEventLogAppender.dll拷到WINNT/SYSTEM32目录下  2.写配备文献log4j.properties # 在系统日记输出  log4j.logger.NTlog=FATAL,A8  # APPENDER A8  log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender  log4j.appender.A8.Source=JavaTest  log4j.appender.A8.layout=org.apache.log4j.PatternLayout  log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n 3.调用代码:  Logger logger2 = Logger.getLogger("NTlog");//要和配备文献中设立名字相似  logger2.debug("debug!!!");  logger2.info("info!!!");  logger2.warn("warn!!!");  logger2.error("error!!!");  //只有这个错误才会写入日记  logger2.fatal("fatal!!!"); 发送email告知管理员:  1. 一方面下载JavaMail和JAF,         在项目中引用mail.jar和activation.jar。  2. 写配备文献  # 将日记发送到email  log4j.logger.MailLog=WARN,A5  #  APPENDER A5  log4j.appender.A5=.SMTPAppender  log4j.appender.A5.BufferSize=5  log4j.appender.A5.To=  log4j.appender.A5.From=  log4j.appender.A5.Subject=ErrorLog  log4j.appender.A5.SMTPHost=  log4j.appender.A5.layout=org.apache.log4j.PatternLayout  log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n  3.调用代码:  //把日记发送到mail  Logger logger3 = Logger.getLogger("MailLog");  logger3.warn("warn!!!");  logger3.error("error!!!");  logger3.fatal("fatal!!!"); 在后台输出所有类别错误:  1. 写配备文献  # 在后台输出  log4j.logger.console=DEBUG,A1  # APPENDER A1  log4j.appender.A1=org.apache.log4j.ConsoleAppender  log4j.appender.A1.layout=org.apache.log4j.PatternLayout  log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n  2.调用代码  Logger logger1 = Logger.getLogger("console");  logger1.debug("debug!!!");  logger1.info("info!!!");  logger1.warn("warn!!!");  logger1.error("error!!!");  logger1.fatal("fatal!!!"); --------------------------------------------------------------------  所有配备文献:log4j.properties  # 在后台输出  log4j.logger.console=DEBUG,A1  # APPENDER A1  log4j.appender.A1=org.apache.log4j.ConsoleAppender  log4j.appender.A1.layout=org.apache.log4j.PatternLayout  log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n # 在系统日记输出  log4j.logger.NTlog=FATAL,A8  # APPENDER A8  log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender  log4j.appender.A8.Source=JavaTest  log4j.appender.A8.layout=org.apache.log4j.PatternLayout  log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n # 将日记发送到email  log4j.logger.MailLog=WARN,A5  #  APPENDER A5  log4j.appender.A5=.SMTPAppender  log4j.appender.A5.BufferSize=5  log4j.appender.A5.To=  log4j.appender.A5.From=  log4j.appender.A5.Subject=ErrorLog  log4j.appender.A5.SMTPHost=  log4j.appender.A5.layout=org.apache.log4j.PatternLayout  log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n 所有代码:Log4jTest.java    /*    * 创立日期 -11-13    */   package edu.bcu.Bean;   import org.apache.log4j.*;   //import org.apache.log4j.nt.*;   //import .*;   /**    * @author yanxu    */   public class Log4jTest   {    public static void main(String args[])    {     PropertyConfigurator.configure("log4j.properties");     //在后台输出     Logger logger1 = Logger.getLogger("console");     logger1.debug("debug!!!");     logger1.info("info!!!");     logger1.warn("warn!!!");     logger1.error("error!!!");     logger1.fatal("fatal!!!"); //在NT系统日记输出     Logger logger2 = Logger.getLogger("NTlog");     //NTEventLogAppender nla = new NTEventLogAppender();     logger2.debug("debug!!!");     logger2.info("info!!!");     logger2.warn("warn!!!");     logger2.error("error!!!");     //只有这个错误才会写入日记     logger2.fatal("fatal!!!"); //把日记发送到mail     Logger logger3 = Logger.getLogger("MailLog");     //SMTPAppender sa = new SMTPAppender();     logger3.warn("warn!!!");     logger3.error("error!!!");     logger3.fatal("fatal!!!");    }   }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服