log4j日志配置

搭建完maven+SpringMVC以后,我们还需要添加日志功能,方便记录应用在应用中产生的日志信息。

1、添加依赖包:依赖中除了对slf4j依赖外还有对邮件插件的依赖。当遇到报错的时候可以发送邮件到我们指定的邮箱

[html]  view plain  copy
  1.   
  2.         <dependency>  
  3.             <groupId>org.slf4jgroupId>  
  4.             <artifactId>slf4j-log4j12artifactId>  
  5.             <version>1.7.25version>  
  6.         dependency>  
  7.           
  8.           
  9.         <dependency>  
  10.             <groupId>javax.mailgroupId>  
  11.             <artifactId>mailartifactId>  
  12.             <version>1.4version>  
  13.         dependency>  
  14.         <dependency>  
  15.             <groupId>javax.activationgroupId>  
  16.             <artifactId>activationartifactId>  
  17.             <version>1.1version>  
  18.         dependency>  
  19.           

2、新建log4j.properties文件,必须在resources目录下

log4j日志配置_第1张图片


3、log4j.properties内容

[html]  view plain  copy
  1.    ### set log levels ###      
  2.    log4j.rootLogger = INFO,DEBUG, console, infoFile, errorFile ,debugfile,mail   
  3.    LocationInfo=true      
  4.       
  5.    log4j.appender.console = org.apache.log4j.ConsoleAppender    
  6.    log4j.appender.console.Target = System.out    
  7.    log4j.appender.console.layout = org.apache.log4j.PatternLayout   
  8.    ##   
  9.    log4j.appender.console.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m   %x %n   
  10.        
  11.    log4j.appender.infoFile = org.apache.log4j.DailyRollingFileAppender    
  12.    log4j.appender.infoFile.Threshold = INFO    
  13.    log4j.appender.infoFile.File = D:/logs/log   
  14.    log4j.appender.infoFile.DatePattern = '.'yyyy-MM-dd'.log'    
  15.    log4j.appender.infoFile.Append=true  
  16.    log4j.appender.infoFile.layout = org.apache.log4j.PatternLayout    
  17.    log4j.appender.infoFile.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m  %x %n   
  18.        
  19.    log4j.appender.errorFile = org.apache.log4j.DailyRollingFileAppender    
  20.    log4j.appender.errorFile.Threshold = ERROR    
  21.    log4j.appender.errorFile.File = D:/logs/error    
  22.    log4j.appender.errorFile.DatePattern = '.'yyyy-MM-dd'.log'    
  23.    log4j.appender.errorFile.Append=true    
  24.    log4j.appender.errorFile.layout = org.apache.log4j.PatternLayout    
  25.    log4j.appender.errorFile.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m  %x %n  
  26.      
  27.    #log4j.appender.debugfile = org.apache.log4j.DailyRollingFileAppender    
  28.    #log4j.appender.debugfile.Threshold = DEBUG    
  29.    #log4j.appender.debugfile.File = D:/logs/debug    
  30.    #log4j.appender.debugfile.DatePattern = '.'yyyy-MM-dd'.log'    
  31.    #log4j.appender.debugfile.Append=true    
  32.    #log4j.appender.debugfile.layout = org.apache.log4j.PatternLayout    
  33.    #log4j.appender.debugfile.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss,SSS}]-[%p]:%m  %x %n  
  34.      
  35.      
  36.    ##mail   
  37.    log4j.appender.mail=org.apache.log4j.net.SMTPAppender    
  38. log4j.appender.mail.Threshold=ERROR    
  39. log4j.appender.mail.BufferSize=1    
  40. log4j.appender.mail.From [email protected]  
  41. log4j.appender.mail.SMTPHost=mail.qq.com  
  42. log4j.appender.mail.Subject=Log4J Message    
  43. log4j.appender.mail.To=xx[email protected]  
  44. log4j.appender.mail.SMTPUsername=123  
  45. log4j.appender.mail.SMTPPassword=123456  
  46. log4j.appender.mail.layout=org.apache.log4j.PatternLayout  
  47. #log4j.appender.mail.layout=org.apache.log4j.PatternLayout    
  48. log4j.appender.mail.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n   

4、上面内容的解释:

[plain]  view plain  copy
  1. 配置详情解释:  
  2. ------------------------------------------------------------------------------------------------------  
  3. Appender 为日志输出目的地,Log4j提供的appender有以下几种:  
  4. org.apache.log4j.ConsoleAppender(控制台),    
  5. org.apache.log4j.FileAppender(文件),    
  6. org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),    
  7. org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),    
  8. org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)  
  9.   
  10. Layout:日志输出格式,Log4j提供的layout有以下几种  
  11. org.apache.log4j.HTMLLayout(以HTML表格形式布局),    
  12. org.apache.log4j.PatternLayout(可以灵活地指定布局模式),    
  13. org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),    
  14. org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)  
  15.   
  16. Log4J采用类似C语言中的printf函数的打印格式格式化日志信息:  
  17. -X号: X信息输出时左对齐;  
  18. %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,  
  19. %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921  
  20. %r: 输出自应用启动到输出该log信息耗费的毫秒数  
  21. %c: 输出日志信息所属的类目,通常就是所在类的全名  
  22. %t: 输出产生该日志事件的线程名  
  23. %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)  
  24. %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。  
  25. %%: 输出一个"%"字符  
  26. %F: 输出日志消息产生时所在的文件名称  
  27. %L: 输出代码中的行号  
  28. %m: 输出代码中指定的消息,产生的日志具体信息  
  29. %n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行  
  30. 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:  
  31. 1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。  
  32. 2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。  
  33. 3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。  
  34. 4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。  
  35.   
  36. ---------------------------------------------------------------------------------------------------------  
  37. http://blog.csdn.net/qq_30175203/article/details/52084127  
  38. ---------------------------------------------------------------------------------------------------------  
  39. ################################################################################   
  40. #①配置根Logger,其语法为:   
  41. #   
  42. #log4j.rootLogger =[level],appenderName,appenderName2,...   
  43. #level是日志记录的优先级,分为OFF,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,ALL   
  44. ##Log4j建议只使用四个级别,优先级从低到高分别是DEBUG,INFO,WARN,ERROR   
  45. #通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关   
  46. #比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来   
  47. #appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的   
  48. ################################################################################   
  49. ################################################################################   
  50. #②配置日志信息输出目的地Appender,其语法为:   
  51. #   
  52. #log4j.appender.appenderName =fully.qualified.name.of.appender.class   
  53. #log4j.appender.appenderName.optionN =valueN   
  54. #   
  55. #Log4j提供的appender有以下几种:   
  56. #1)org.apache.log4j.ConsoleAppender(输出到控制台)   
  57. #2)org.apache.log4j.FileAppender(输出到文件)   
  58. #3)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)   
  59. #4)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)   
  60. #5)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)   
  61. #   
  62. #1)ConsoleAppender选项属性   
  63. # -Threshold = DEBUG:指定日志消息的输出最低层次   
  64. # -ImmediateFlush = TRUE:默认值是true,所有的消息都会被立即输出   
  65. # -Target = System.err:默认值System.out,输出到控制台(err为红色,out为黑色)   
  66. #   
  67. #2)FileAppender选项属性   
  68. # -Threshold = INFO:指定日志消息的输出最低层次   
  69. # -ImmediateFlush = TRUE:默认值是true,所有的消息都会被立即输出   
  70. # -File = C:\log4j.log:指定消息输出到C:\log4j.log文件   
  71. # -Append = FALSE:默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容   
  72. # -Encoding = UTF-8:可以指定文件编码格式   
  73. #   
  74. #3)DailyRollingFileAppender选项属性   
  75. #-Threshold = WARN:指定日志消息的输出最低层次   
  76. #-ImmediateFlush = TRUE:默认值是true,所有的消息都会被立即输出   
  77. # -File =C:\log4j.log:指定消息输出到C:\log4j.log文件   
  78. # -Append= FALSE:默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容   
  79. #-DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。还可以按用以下参数:   
  80. #              '.'yyyy-MM:每月   
  81. #              '.'yyyy-ww:每周   
  82. #              '.'yyyy-MM-dd:每天   
  83. #              '.'yyyy-MM-dd-a:每天两次   
  84. #              '.'yyyy-MM-dd-HH:每小时   
  85. #              '.'yyyy-MM-dd-HH-mm:每分钟   
  86. #-Encoding = UTF-8:可以指定文件编码格式   
  87. #   
  88. #4)RollingFileAppender选项属性   
  89. #-Threshold = ERROR:指定日志消息的输出最低层次   
  90. #-ImmediateFlush = TRUE:默认值是true,所有的消息都会被立即输出   
  91. # -File =C:/log4j.log:指定消息输出到C:/log4j.log文件   
  92. # -Append= FALSE:默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容   
  93. #-MaxFileSize = 100KB:后缀可以是KB,MB,GB.在日志文件到达该大小时,将会自动滚动.如:log4j.log.1   
  94. #-MaxBackupIndex = 2:指定可以产生的滚动文件的最大数   
  95. #-Encoding = UTF-8:可以指定文件编码格式 、、//好像不支持这个功能  
  96. ################################################################################   
  97. ################################################################################   
  98. #③配置日志信息的格式(布局),其语法为:   
  99. #   
  100. #log4j.appender.appenderName.layout=fully.qualified.name.of.layout.class   
  101. #log4j.appender.appenderName.layout.optionN= valueN   
  102. #   
  103. #Log4j提供的layout有以下几种:   
  104. #5)org.apache.log4j.HTMLLayout(以HTML表格形式布局)   
  105. #6)org.apache.log4j.PatternLayout(可以灵活地指定布局模式)   
  106. #7)org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)   
  107. #8)org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)   
  108. #9)org.apache.log4j.xml.XMLLayout(以XML形式布局)   
  109. #   
  110. #5)HTMLLayout选项属性   
  111. #-LocationInfo = TRUE:默认值false,输出java文件名称和行号   
  112. #-Title=Struts Log Message:默认值 Log4JLog Messages   
  113. #   
  114. #6)PatternLayout选项属性   
  115. #-ConversionPattern = %m%n:格式化指定的消息(参数意思下面有)   
  116. #   
  117. #9)XMLLayout选项属性   
  118. #-LocationInfo = TRUE:默认值false,输出java文件名称和行号   
  119. #   
  120. #Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:   
  121. #%m 输出代码中指定的消息   
  122. #%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL   
  123. #%r 输出自应用启动到输出该log信息耗费的毫秒数   
  124. #%c 输出所属的类目,通常就是所在类的全名   
  125. #%t 输出产生该日志事件的线程名   
  126. #%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”   
  127. #%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式   
  128. #    如:%d{yyyy年MM月dd日HH:mm:ss,SSS},输出类似:2012年01月05日 22:10:28,921   
  129. #%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数   
  130. #    如:Testlog.main(TestLog.java:10)   
  131. #%F 输出日志消息产生时所在的文件名称   
  132. #%L 输出代码中的行号   
  133. #%x 输出和当前线程相关联的NDC(嵌套诊断环境),像javaservlets多客户多线程的应用中   
  134. #%% 输出一个"%"字符   
  135. #   
  136. # 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:   
  137. #  %5c: 输出category名称,最小宽度是5,category<5,默认的情况下右对齐   
  138. #  %-5c:输出category名称,最小宽度是5,category<5,"-"号指定左对齐,会有空格   
  139. #  %.5c:输出category名称,最大宽度是5,category>5,就会将左边多出的字符截掉,<5不会有空格   
  140. #  %20.30c:category名称<20补空格,并且右对齐,>30字符,就从左边交远销出的字符截掉   

log4j日志配置_第2张图片


输出结果为:[2017-12-07 14:18:33,149]-[INFO]:你好! [ Test.java:15 ] 


目前发送到邮箱这个有的还不能用,我自己本地测试公司邮箱是可以发送到自己公司邮箱,但是使用qq有限却无法发送过去报链接失败:查过原因:

一下是网上找的:但是我也不知道怎么去放开,试了好多遍都不行。

这个是网上查找的解决办法,但是不知道咋搞,有明白的同学,请教各位了。。。

JavaMail无法连接SMTP25端口问题

测试JavaMail发邮件功能,始终发生错误:
javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25
使用outlook收发邮件正常,使用telnet smtp.163.com 25不能连接
什么错误?很是莫名其妙!
从网上查资料,只有提问的没有回答的,有些都问了若干年了没有答案,真年头技术都在干嘛啊?
废话少说,问题查到了,是安装的杀毒软件进行了端口拦截,“禁止大量发送邮件的蠕虫病毒发送邮件端口25”,outlook之所以能够使用是因为outlook的进程被加到“已排除进程”中。反垃圾邮件功能阻止了javaw.exe和telenet.exe对port 25的访问!
取消掉对javaw.exe、java.exe和telenet.exe的阻止,telnet成功,发送邮件成功!

你可能感兴趣的:(log4j)