一个有用的log4j.properties文件模板

本文介绍了一个实用的Log4j配置文件模板,包括输出至控制台、文件、回滚文件等多种场景,并解决了日志邮件标题及正文的乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个有用的log4j.properties文件模板

.properties代码  收藏代码
  1. ##Log4J的配置之简单使它遍及于越来越多的应用中了   
  2.   
  3. ##Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了。   
  4.   
  5. ##此文件(log4j.properties)内容来自网络,非本文作者liigo原创。   
  6. log4j.rootLogger = DEBUG, CONSOLE,A1   
  7. log4j.addivity.org.apache = true    
  8.   
  9. # 应用于控制台   
  10. log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender   
  11. log4j.appender.Threshold = DEBUG   
  12. log4j.appender.CONSOLE.Target = System.out   
  13. log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout   
  14. log4j.appender.CONSOLE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n   
  15. #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   
  16.   
  17. #应用于文件   
  18. log4j.appender.FILE = org.apache.log4j.FileAppender   
  19. log4j.appender.FILE.File = file.log   
  20. log4j.appender.FILE.Append = false    
  21. log4j.appender.FILE.layout = org.apache.log4j.PatternLayout   
  22. log4j.appender.FILE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n   
  23. # Use  this  layout  for  LogFactor  5  analysis   
  24.   
  25. # 应用于文件回滚   
  26. log4j.appender.ROLLING_FILE = org.apache.log4j.RollingFileAppender   
  27. log4j.appender.ROLLING_FILE.Threshold = ERROR   
  28. log4j.appender.ROLLING_FILE.File = rolling.log   
  29. log4j.appender.ROLLING_FILE.Append = true    
  30. log4j.appender.ROLLING_FILE.MaxFileSize = 10KB   
  31. log4j.appender.ROLLING_FILE.MaxBackupIndex = 1    
  32. log4j.appender.ROLLING_FILE.layout = org.apache.log4j.PatternLayout   
  33. log4j.appender.ROLLING_FILE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n   
  34.   
  35. #应用于socket   
  36. log4j.appender.SOCKET = org.apache.log4j.RollingFileAppender   
  37. log4j.appender.SOCKET.RemoteHost = localhost   
  38. log4j.appender.SOCKET.Port = 5001    
  39. log4j.appender.SOCKET.LocationInfo = true    
  40. # Set up  for  Log Facter  5    
  41. log4j.appender.SOCKET.layout = org.apache.log4j.PatternLayout   
  42. 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   
  43.   
  44. # Log Factor  5  Appender   
  45. log4j.appender.LF5_APPENDER = org.apache.log4j.lf5.LF5Appender   
  46. log4j.appender.LF5_APPENDER.MaxNumberOfRecords = 2000    
  47.   
  48. # 发送日志给邮件   
  49. log4j.appender.MAIL = org.apache.log4j.net.SMTPAppender   
  50. log4j.appender.MAIL.Threshold = FATA   
  51. log4j.appender.MAIL.BufferSize = 10    
  52. log4j.appender.MAIL.From = web@www.wuset.com   
  53. log4j.appender.MAIL.SMTPHost = www.wusetu.com   
  54. log4j.appender.MAIL.Subject = Log4J Message   
  55. log4j.appender.MAIL.To = web@www.wusetu.com   
  56. log4j.appender.MAIL.layout = org.apache.log4j.PatternLayout   
  57. log4j.appender.MAIL.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n   
  58.   
  59.   
  60. # 用于数据库   
  61. log4j.appender.DATABASE = org.apache.log4j.jdbc.JDBCAppender   
  62. log4j.appender.DATABASE.URL = jdbc:mysql: // localhost:3306/test    
  63. log4j.appender.DATABASE.driver = com.mysql.jdbc.Driver   
  64. log4j.appender.DATABASE.user = root   
  65. log4j.appender.DATABASE.password =    
  66. log4j.appender.DATABASE.sql = INSERT INTO LOG4J (Message) VALUES ( ' [framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ' )   
  67. log4j.appender.DATABASE.layout = org.apache.log4j.PatternLayout   
  68. log4j.appender.DATABASE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n   
  69. log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender   
  70. log4j.appender.A1.File = SampleMessages.log4j   
  71. log4j.appender.A1.DatePattern = yyyyMMdd - HH ' .log4j '    
  72. log4j.appender.A1.layout = org.apache.log4j.xml.XMLLayout   
  73.   
  74. #自定义Appender   
  75. log4j.appender.im  =  net.cybercorlin.util.logger.appender.IMAppender   
  76. log4j.appender.im.host  =  mail.cybercorlin.net   
  77. log4j.appender.im.username  =  username   
  78. log4j.appender.im.password  =  password   
  79. log4j.appender.im.recipient  =  corlin@cybercorlin.net   
  80. log4j.appender.im.layout = org.apache.log4j.PatternLayout   
  81. log4j.appender.im.layout.ConversionPattern  = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n   
  82.   
  83. # 结束   

 

Log4J发日志邮件给多个接收者及标题、正文乱码问题 

以前开发的系统没有单独的日志管理,所有的日志统一输出到tomcat后台一个文件里,不几天就是好几G,现在要整体增加一个Log4J管理日志的功能,其实这方面的资料网上多的是。发邮件的配置说明也有,但是具体怎么发,乱码问题怎么解决那就比较少了。 
       利用javamail发送邮件,你需要导入包mail.jar和activation.jar这两个包 ,否则是没法发邮件的 ,下边配置文件里绿色行显示的就是发给两个接收者ac和ae。 

       这里会出现中文乱码问题,主要有两方面的乱码,一是标题乱码;二是正文乱码。下边具体说明这两种乱码的解决方案。 
一、 标题乱码 
Log4J日志邮件的标题在配置文件log4j.properties里设定,如下 
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender 
log4j.appender.MAIL.Threshold=FATAL 
log4j.appender.MAIL.BufferSize=10 
log4j.appender.MAIL.From=ab@163.com 
log4j.appender.MAIL.SMTPHost=smtp@163.com 
log4j.appender.MAIL.Subject= Log4J提醒您:系统发生了严重错误log4j.appender.MAIL.To=ac@163.com,ae@163.com 
log4j.appender.MAIL.layout=com.sun.DefineLayOut 
log4j.appender.MAIL.layout.LocationInfo=true 

       绿色的行就是标题,log4J配置文件默认的读取方式是ISO-88591,遇到中文会出现乱码,我们可以把这个配置文件log4j.properties用jdk的工具native2asii转换一下编码方式。 
命令:native2asii log4j.properties log4jxx.properties 
把这个log4jxx.properties改名为log4j.properties取代原来的log4j.properties就ok了。 
灰色行重新编码后是: 
log4j.appender.MAIL.Subject=Log4J\u63d0\u9192\u60a8\uff1a\u7cfb\u7edf\u53d1\u751f\u4e86\u4e25\u91cd\u9519\u8bef

二、 正文乱码 
        正文乱码,解决也比较简单。阅读Log4J的源码类SMTPAppender,我们可以发现sendBuffer()方法中有这样一句: 
part.setContent(sbuf.toString(), layout.getContentType()); 
我们继续追踪发现layout就是配置文件里的layout属性对应的布局模式。但是这些布局模式都是继承自Layout,而contentType是只可通过getContentType方法取得,不能修改。所有的布局模式getContentType方法返回的都是”text/plain”; 
为处理中文乱码,我们可以写一个布局模式。如果你要使用HTMLLayout,我们就写一个HTMLLayout的子类,覆盖HTMLLayout的getContentType方法即可。假如我要用org.apache.log4j.HTMLLayout。我们就可以写一个DefineLayOut类,代码如下: 
package com.sun; 

import org.apache.log4j.HTMLLayout; 
public class DefineLayOut extends HTMLLayout{ 
public String getContentType() { 
return "text/html;charset=GBK"; 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值