Log4j实现对Java日志的配置全攻略

来源:互联网 发布:中国谁靠卖域名发财 编辑:程序博客网 时间:2024/05/22 04:43
  1. 1. 配置文件  
  2. Log4J配置文件的基本格式如下:   
  3.   
  4.   
  5. #配置根Logger  
  6. log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …  
  7.   
  8.   
  9. #配置日志信息输出目的地Appender  
  10. log4j.appender.appenderName  =  fully.qualified.name.of.appender.class   
  11.   log4j.appender.appenderName.option1  =  value1   
  12.   …   
  13.   log4j.appender.appenderName.optionN  =  valueN   
  14.   
  15.   
  16. #配置日志信息的格式(布局)  
  17. log4j.appender.appenderName.layout  =  fully.qualified.name.of.layout.class   
  18.   log4j.appender.appenderName.layout.option1  =  value1   
  19.   …   
  20.   log4j.appender.appenderName.layout.optionN  =  valueN    
  21. 其中 [level] 是日志输出级别,共有5级:  
  22.   
  23.   
  24. FATAL       0    
  25. ERROR      3    
  26. WARN       4    
  27. INFO         6    
  28. DEBUG      7   
  29.    
  30. Appender 为日志输出目的地,Log4j提供的appender有以下几种:  
  31.   
  32.   
  33. org.apache.log4j.ConsoleAppender(控制台),  
  34. org.apache.log4j.FileAppender(文件),  
  35. org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),  
  36. org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),  
  37. org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)   
  38. Layout:日志输出格式,Log4j提供的layout有以下几种:  
  39.   
  40.   
  41.   
  42.   
  43. org.apache.log4j.HTMLLayout(以HTML表格形式布局),  
  44. org.apache.log4j.PatternLayout(可以灵活地指定布局模式),  
  45. org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),  
  46. org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)   
  47. 打印参数: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:  
  48.   
  49.   
  50.   
  51.   
  52.     %m   输出代码中指定的消息  
  53.   %p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL   
  54.   %r   输出自应用启动到输出该log信息耗费的毫秒数   
  55.   %c   输出所属的类目,通常就是所在类的全名   
  56.   %t   输出产生该日志事件的线程名   
  57.   %n   输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”   
  58.   %d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:20021018日  22 : 10 : 28 , 921    
  59.   %l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )    
  60. 2. 在代码中初始化Logger:   
  61. 1)在程序中调用BasicConfigurator.configure()方法:给根记录器增加一个ConsoleAppender,输出格式通过PatternLayout设为"%-4r [%t] %-5p %c %x - %m%n",还有根记录器的默认级别是Level.DEBUG.   
  62. 2)配置放在文件里,通过命令行参数传递文件名字,通过PropertyConfigurator.configure(args[x])解析并配置;  
  63. 3)配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;  
  64. 4)配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。  
  65.   
  66.   
  67. 3. 为不同的 Appender 设置日志输出级别:  
  68. 当调试系统时,我们往往注意的只是异常级别的日志输出,但是通常所有级别的输出都是放在一个文件里的,如果日志输出的级别是BUG!?那就慢慢去找吧。  
  69. 这时我们也许会想要是能把异常信息单独输出到一个文件里该多好啊。当然可以,Log4j已经提供了这样的功能,我们只需要在配置中修改Appender的Threshold 就能实现,比如下面的例子:  
  70.   
  71.   
  72. [配置文件]  
  73.   
  74.   
  75.   
  76.   
  77.  ### set log levels ###  
  78. log4j.rootLogger = debug ,  stdout ,  D ,  E  
  79.   
  80.   
  81. ### 输出到控制台 ###  
  82. log4j.appender.stdout = org.apache.log4j.ConsoleAppender  
  83. log4j.appender.stdout.Target = System.out  
  84. log4j.appender.stdout.layout = org.apache.log4j.PatternLayout  
  85. log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n  
  86.   
  87.   
  88. ### 输出到日志文件 ###  
  89. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender  
  90. log4j.appender.D.File = logs/log.log  
  91. log4j.appender.D.Append = true  
  92. log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的日志  
  93. log4j.appender.D.layout = org.apache.log4j.PatternLayout  
  94. log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n  
  95.   
  96.   
  97. ### 保存异常信息到单独文件 ###  
  98. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender  
  99. log4j.appender.D.File = logs/error.log ## 异常日志文件名  
  100. log4j.appender.D.Append = true  
  101. log4j.appender.D.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!  
  102. log4j.appender.D.layout = org.apache.log4j.PatternLayout  
  103. log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n   
  104. [代码中使用]   
  105.   
  106.   
  107.   
  108.   
  109.   public   class  TestLog4j   {  
  110.      public   static   void  main(String[] args)   {  
  111.         PropertyConfigurator.configure( " D:/Code/conf/log4j.properties " );  
  112.         Logger logger  =  Logger.getLogger(TestLog4j. class );  
  113.         logger.debug( " debug " );  
  114.         logger.error( " error " );  
  115.     }   
  116. }   
  117. 运行一下,看看异常信息是不是保存在了一个单独的文件error.log中  
  118.   
  119.   
  120.    
  121.   
  122.   
  123.    
  124.   
  125.   
  126.    
  127.   
  128.   
  129.    
  130.   
  131.   
  132. log4j.properties 使用  
  133. 一.参数意义说明  
  134. 输出级别的种类  
  135. ERROR、WARN、INFO、DEBUG  
  136. ERROR 为严重错误 主要是程序的错误  
  137. WARN 为一般警告,比如session丢失  
  138. INFO 为一般要显示的信息,比如登录登出  
  139. DEBUG 为程序的调试信息  
  140. 配置日志信息输出目的地  
  141. log4j.appender.appenderName = fully.qualified.name.of.appender.class  
  142. 1.org.apache.log4j.ConsoleAppender(控制台)  
  143. 2.org.apache.log4j.FileAppender(文件)  
  144. 3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)  
  145. 4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)  
  146. 5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)  
  147. 配置日志信息的格式  
  148. log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class  
  149. 1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),  
  150. 2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),  
  151. 3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),  
  152. 4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)  
  153. 控制台选项  
  154. Threshold=DEBUG:指定日志消息的输出最低层次。  
  155. ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。  
  156. Target=System.err:默认情况下是:System.out,指定输出控制台  
  157. FileAppender 选项  
  158. Threshold=DEBUF:指定日志消息的输出最低层次。  
  159. ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。  
  160. File=mylog.txt:指定消息输出到mylog.txt文件。  
  161. Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。  
  162. RollingFileAppender 选项  
  163. Threshold=DEBUG:指定日志消息的输出最低层次。  
  164. ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。  
  165. File=mylog.txt:指定消息输出到mylog.txt文件。  
  166. Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。  
  167. MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。  
  168. MaxBackupIndex=2:指定可以产生的滚动文件的最大数。  
  169. log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n  
  170. 日志信息格式中几个符号所代表的含义:  
  171.  -X号: X信息输出时左对齐;  
  172.  %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,  
  173.  %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:20021018日 221028921  
  174.  %r: 输出自应用启动到输出该log信息耗费的毫秒数  
  175.  %c: 输出日志信息所属的类目,通常就是所在类的全名  
  176.  %t: 输出产生该日志事件的线程名  
  177.  %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)  
  178.  %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。  
  179.  %%: 输出一个"%"字符  
  180.  %F: 输出日志消息产生时所在的文件名称  
  181.  %L: 输出代码中的行号  
  182.  %m: 输出代码中指定的消息,产生的日志具体信息  
  183.  %n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行  
  184.  可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:  
  185.  1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。  
  186.  2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。  
  187.  3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。  
  188.  4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。  
  189. 二.文件配置Sample1  
  190. log4j.rootLogger=DEBUG,A1,R  
  191. #log4j.rootLogger=INFO,A1,R  
  192. # ConsoleAppender 输出  
  193. log4j.appender.A1=org.apache.log4j.ConsoleAppender  
  194. log4j.appender.A1.layout=org.apache.log4j.PatternLayout  
  195. log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n  
  196. # File 输出 一天一个文件,输出路径可以定制,一般在根路径下  
  197. log4j.appender.R=org.apache.log4j.DailyRollingFileAppender  
  198. log4j.appender.R.File=blog_log.txt  
  199. log4j.appender.R.MaxFileSize=500KB  
  200. log4j.appender.R.MaxBackupIndex=10  
  201. log4j.appender.R.layout=org.apache.log4j.PatternLayout  
  202. log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n  
  203. 文件配置Sample2  
  204. 下面给出的Log4J配置文件实现了输出到控制台,文件,回滚文件,发送日志邮件,输出到数据库日志表,自定义标签等全套功能。  
  205. log4j.rootLogger=DEBUG,CONSOLE,A1,im   
  206. #DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE  
  207. log4j.addivity.org.apache=true  
  208. ###################   
  209. # Console Appender   
  210. ###################   
  211. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender   
  212. log4j.appender.Threshold=DEBUG   
  213. log4j.appender.CONSOLE.Target=System.out   
  214. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout   
  215. log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n   
  216. #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  
  217. #####################   
  218. # File Appender   
  219. #####################   
  220. log4j.appender.FILE=org.apache.log4j.FileAppender   
  221. log4j.appender.FILE.File=file.log   
  222. log4j.appender.FILE.Append=false   
  223. log4j.appender.FILE.layout=org.apache.log4j.PatternLayout   
  224. log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n   
  225. # Use this layout for LogFactor 5 analysis  
  226. ########################   
  227. # Rolling File   
  228. ########################   
  229. log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender   
  230. log4j.appender.ROLLING_FILE.Threshold=ERROR   
  231. log4j.appender.ROLLING_FILE.File=rolling.log   
  232. log4j.appender.ROLLING_FILE.Append=true   
  233. log4j.appender.ROLLING_FILE.MaxFileSize=10KB   
  234. log4j.appender.ROLLING_FILE.MaxBackupIndex=1   
  235. log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout   
  236. log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n  
  237. ####################   
  238. # Socket Appender   
  239. ####################   
  240. log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender   
  241. log4j.appender.SOCKET.RemoteHost=localhost   
  242. log4j.appender.SOCKET.Port=5001   
  243. log4j.appender.SOCKET.LocationInfo=true   
  244. # Set up for Log Facter 5   
  245. log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout   
  246. 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  
  247. ########################   
  248. # Log Factor 5 Appender   
  249. ########################   
  250. log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender   
  251. log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000  
  252. ########################   
  253. # SMTP Appender   
  254. #######################   
  255. log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender   
  256. log4j.appender.MAIL.Threshold=FATAL   
  257. log4j.appender.MAIL.BufferSize=10   
  258. log4j.appender.MAIL.From=chenyl@yeqiangwei.com  
  259. log4j.appender.MAIL.SMTPHost=mail.hollycrm.com   
  260. log4j.appender.MAIL.Subject=Log4J Message   
  261. log4j.appender.MAIL.To=chenyl@yeqiangwei.com  
  262. log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout   
  263. log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n  
  264. ########################   
  265. # JDBC Appender   
  266. #######################   
  267. log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender   
  268. log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test   
  269. log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver   
  270. log4j.appender.DATABASE.user=root   
  271. log4j.appender.DATABASE.password=   
  272. log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')   
  273. log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout   
  274. log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n  
  275. log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender   
  276. log4j.appender.A1.File=SampleMessages.log4j   
  277. log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'   
  278. log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout  
  279. ###################   
  280. #自定义Appender   
  281. ###################   
  282. log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender  
  283. log4j.appender.im.host = mail.cybercorlin.net   
  284. log4j.appender.im.username = username   
  285. log4j.appender.im.password = password   
  286. log4j.appender.im.recipient = corlin@yeqiangwei.com  
  287. log4j.appender.im.layout=org.apache.log4j.PatternLayout   
  288. log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n  
  289. 三.高级使用  
  290. 实验目的:  
  291.  1.把FATAL级错误写入2000NT日志  
  292.  2. WARN,ERROR,FATAL级错误发送email通知管理员  
  293.  3.其他级别的错误直接在后台输出  
  294. 实验步骤:  
  295.  输出到2000NT日志  
  296.  1.把Log4j压缩包里的NTEventLogAppender.dll拷到WINNT/SYSTEM32目录下  
  297.  2.写配置文件log4j.properties  
  298. # 在2000系统日志输出  
  299.  log4j.logger.NTlog=FATAL, A8  
  300.  # APPENDER A8  
  301.  log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender  
  302.  log4j.appender.A8.Source=JavaTest  
  303.  log4j.appender.A8.layout=org.apache.log4j.PatternLayout  
  304.  log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n  
  305. 3.调用代码:  
  306.  Logger logger2 = Logger.getLogger("NTlog"); //要和配置文件中设置的名字相同  
  307.  logger2.debug("debug!!!");  
  308.  logger2.info("info!!!");  
  309.  logger2.warn("warn!!!");  
  310.  logger2.error("error!!!");  
  311.  //只有这个错误才会写入2000日志  
  312.  logger2.fatal("fatal!!!");  
  313. 发送email通知管理员:  
  314.  1. 首先下载JavaMail和JAF,   
  315.   http://java.sun.com/j2ee/ja/javamail/index.html  
  316.   http://java.sun.com/beans/glasgow/jaf.html  
  317.  在项目中引用mail.jar和activation.jar。  
  318.  2. 写配置文件  
  319.  # 将日志发送到email  
  320.  log4j.logger.MailLog=WARN,A5  
  321.  #  APPENDER A5  
  322.  log4j.appender.A5=org.apache.log4j.net.SMTPAppender  
  323.  log4j.appender.A5.BufferSize=5  
  324.  log4j.appender.A5.To=chunjie@yeqiangwei.com  
  325.  log4j.appender.A5.From=error@yeqiangwei.com  
  326.  log4j.appender.A5.Subject=ErrorLog  
  327.  log4j.appender.A5.SMTPHost=smtp.263.net  
  328.  log4j.appender.A5.layout=org.apache.log4j.PatternLayout  
  329.  log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n  
  330.  3.调用代码:  
  331.  //把日志发送到mail  
  332.  Logger logger3 = Logger.getLogger("MailLog");  
  333.  logger3.warn("warn!!!");  
  334.  logger3.error("error!!!");  
  335.  logger3.fatal("fatal!!!");  
  336. 在后台输出所有类别的错误:  
  337.  1. 写配置文件  
  338.  # 在后台输出  
  339.  log4j.logger.console=DEBUG, A1  
  340.  # APPENDER A1  
  341.  log4j.appender.A1=org.apache.log4j.ConsoleAppender  
  342.  log4j.appender.A1.layout=org.apache.log4j.PatternLayout  
  343.  log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n  
  344.  2.调用代码  
  345.  Logger logger1 = Logger.getLogger("console");  
  346.  logger1.debug("debug!!!");  
  347.  logger1.info("info!!!");  
  348.  logger1.warn("warn!!!");  
  349.  logger1.error("error!!!");  
  350.  logger1.fatal("fatal!!!");  
  351. --------------------------------------------------------------------  
  352.  全部配置文件:log4j.properties  
  353.  # 在后台输出  
  354.  log4j.logger.console=DEBUG, A1  
  355.  # APPENDER A1  
  356.  log4j.appender.A1=org.apache.log4j.ConsoleAppender  
  357.  log4j.appender.A1.layout=org.apache.log4j.PatternLayout  
  358.  log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n  
  359. # 在2000系统日志输出  
  360.  log4j.logger.NTlog=FATAL, A8  
  361.  # APPENDER A8  
  362.  log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender  
  363.  log4j.appender.A8.Source=JavaTest  
  364.  log4j.appender.A8.layout=org.apache.log4j.PatternLayout  
  365.  log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n  
  366. # 将日志发送到email  
  367.  log4j.logger.MailLog=WARN,A5  
  368.  #  APPENDER A5  
  369.  log4j.appender.A5=org.apache.log4j.net.SMTPAppender  
  370.  log4j.appender.A5.BufferSize=5  
  371.  log4j.appender.A5.To=chunjie@yeqiangwei.com  
  372.  log4j.appender.A5.From=error@yeqiangwei.com  
  373.  log4j.appender.A5.Subject=ErrorLog  
  374.  log4j.appender.A5.SMTPHost=smtp.263.net  
  375.  log4j.appender.A5.layout=org.apache.log4j.PatternLayout  
  376.  log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n  
  377. 全部代码:Log4jTest.java  
  378.     
  379. /*  
  380.   * 创建日期 2003-11-13  
  381.   */   
  382.  package edu.bcu.Bean;   
  383.  import org.apache.log4j.*;   
  384.  //import org.apache.log4j.nt.*;   
  385.  //import org.apache.log4j.net.*;   
  386.  /**  
  387.   * @author yanxu  
  388.   */   
  389.  public class Log4jTest   
  390.  {   
  391.   public static void main(String args[])   
  392.   {   
  393.    PropertyConfigurator.configure("log4j.properties");   
  394.    //在后台输出   
  395.    Logger logger1 = Logger.getLogger("console");   
  396.    logger1.debug("debug!!!");   
  397.    logger1.info("info!!!");   
  398.    logger1.warn("warn!!!");   
  399.    logger1.error("error!!!");   
  400.    logger1.fatal("fatal!!!");  
  401. //在NT系统日志输出   
  402.    Logger logger2 = Logger.getLogger("NTlog");   
  403.    //NTEventLogAppender nla = new NTEventLogAppender();   
  404.    logger2.debug("debug!!!");   
  405.    logger2.info("info!!!");   
  406.    logger2.warn("warn!!!");   
  407.    logger2.error("error!!!");   
  408.    //只有这个错误才会写入2000日志   
  409.    logger2.fatal("fatal!!!");  
  410. //把日志发送到mail   
  411.    Logger logger3 = Logger.getLogger("MailLog");   
  412.    //SMTPAppender sa = new SMTPAppender();   
  413.    logger3.warn("warn!!!");   
  414.    logger3.error("error!!!");   
  415.    logger3.fatal("fatal!!!");   
  416.   }   
  417.  }   
0 0