log4j WARN No appenders could be found for logger

From: http://ylzhj01.javaeye.com/blog/763361

使用时,如果在程序中没有 log4j.properties , 则会出现如标题的warn, 程序不能运行。

把这个文件放到src下便可

网络较详细地说明有:

http://blog.youkuaiyun.com/azheng270/archive/2008/03/12/2173430.aspx

http://blog.youkuaiyun.com/hingwu/archive/2007/02/13/1509269.aspx

http://www.cnblogs.com/licheng/archive/2008/09/23/1297185.html

http://haitao.javaeye.com/blog/192491

log4j WARN No such property SMTP Username

是因为版本不对, log4j-1.2.13.jar 用新的 log4j-1.2.16.jar解决问题

出现下面的问题

1。即使是将 log4j.appender.MAIL.Threshold=ERROR 修改为 INFO 级别 ,也只有在日志输出级别为 ERROR (即代码中调用logger.error("message")方法)时才会发送邮件,不知道是什么原因,反正现在的已经满足了需求,就没在去研究。

可能的解决办法http://www.manning-sandbox.com/thread.jspa?messageID=91270

Java代码 收藏代码
  1. Inordertosendemailloggingmessages for levelsbelowerror,youneedtosetandcreatea new EvaluatorClass.Tofollowtheexampleabove,thelo4j.propertiesfilebecomes:
  2. #Assignappenderstorootlogger
  3. log4j.rootLogger=DEBUG,myConsole,myLogFile,myMail
  4. #Consoleappender
  5. log4j.appender.myConsole=org.apache.log4j.ConsoleAppender
  6. log4j.appender.myConsole.layout=org.apache.log4j.PatternLayout
  7. log4j.appender.myConsole.layout.ConversionPattern=%5p[%t](%F:%L)-%m%n
  8. #Rollingfileappender
  9. log4j.appender.myLogFile=org.apache.log4j.RollingFileAppender
  10. log4j.appender.myLogFile.File=mylog.log
  11. log4j.appender.myLogFile.MaxFileSize=100KB
  12. log4j.appender.myLogFile.MaxBackupIndex=2
  13. log4j.appender.myLogFile.layout=org.apache.log4j.PatternLayout
  14. log4j.appender.myLogFile.layout.ConversionPattern=%d{MMMd,yyyyhh:mm:ssa}:%p[%t]%m%n
  15. log4j.appender.myLogFile.threshold=WARN
  16. #SMTPappender
  17. log4j.appender.myMail=org.apache.log4j.net.SMTPAppender
  18. log4j.appender.myMail.Threshold=WARN
  19. log4j.appender.myMail.BufferSize=10
  20. log4j.appender.myMail.To=username@agency .gov
  21. log4j.appender.myMail.From=username@agency .gov
  22. log4j.appender.myMail.SMTPHost=smtphost
  23. log4j.appender.myMail.Subject=Log4JMessage
  24. log4j.appender.myMail.layout=org.apache.log4j.PatternLayout
  25. log4j.appender.myMail.layout.ConversionPattern=%5p[%t](%F:%L)-%m%n
  26. #THISISTHENEWLINETOSETTHEEVALUATOR
  27. log4j.appender.myMail.evaluatorClass=com.millersystems.example.spi.MyEvaluator
  28. Nowyouhavetocreatetheevaluatorclass andimplementtheorg.apache.log4j.spi.TriggeringEventEvaluator interface andplace this class inapathwherelog4jcanaccessit.
  29. //ExampleTriggeringEventEvaluatorimpl
  30. package com.millersystems.example.spi;
  31. import org.apache.log4j.spi.LoggingEvent;
  32. import org.apache.log4j.spi.TriggeringEventEvaluator;
  33. public class MyEvaluator implements TriggeringEventEvaluator{
  34. public boolean isTriggeringEvent(LoggingEventevent){ return true ;}
  35. }
In order to send email logging messages for levels below error, you need to set and create a new EvaluatorClass. To follow the example above, the lo4j.properties file becomes:
# Assign appenders to root logger
log4j.rootLogger=DEBUG, myConsole, myLogFile, myMail

# Console appender
log4j.appender.myConsole=org.apache.log4j.ConsoleAppender
log4j.appender.myConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.myConsole.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

# Rolling file appender
log4j.appender.myLogFile=org.apache.log4j.RollingFileAppender
log4j.appender.myLogFile.File=mylog.log
log4j.appender.myLogFile.MaxFileSize=100KB
log4j.appender.myLogFile.MaxBackupIndex=2
log4j.appender.myLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.myLogFile.layout.ConversionPattern=%d{MMM d, yyyy hh:mm:ss a}: %p [%t] %m%n
log4j.appender.myLogFile.threshold=WARN

# SMTP appender
log4j.appender.myMail=org.apache.log4j.net.SMTPAppender
log4j.appender.myMail.Threshold=WARN
log4j.appender.myMail.BufferSize=10
log4j.appender.myMail.To=username@agency.gov
log4j.appender.myMail.From=username@agency.gov
log4j.appender.myMail.SMTPHost=smtphost
log4j.appender.myMail.Subject=Log4J Message
log4j.appender.myMail.layout=org.apache.log4j.PatternLayout
log4j.appender.myMail.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
# THIS IS THE NEW LINE TO SET THE EVALUATOR
log4j.appender.myMail.evaluatorClass=com.millersystems.example.spi.MyEvaluator


Now you have to create the evaluator class and implement the org.apache.log4j.spi.TriggeringEventEvaluator interface and place this class in a path where log4j can access it.

//Example TriggeringEventEvaluator impl

package com.millersystems.example.spi;

import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.TriggeringEventEvaluator;
public class MyEvaluator implements TriggeringEventEvaluator {

public boolean isTriggeringEvent(LoggingEvent event) { return true; }

} 

2。log4j:ERROR Error occured while sending e-mail notification.
javax.mail.SendFailedException: Sending failed;
nested exception is:
class javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. d39sm646911wam.4

解决办法:

http://codelol.com/2009/09/log4j-smtpappender-and-authentication/

Java代码 收藏代码
  1. Iwastryingtohookupmylog4jconfigurationtomygmailaccountsothatIcouldbeimmediatelyalert for errors.Prettysimpleuse case …ButIstartedgettingerrorslike:
  2. com.sun.mail.smtp.SMTPSendFailedException:530 5.7 . 0 MustissueaSTARTTLScommandfirst.
  3. and
  4. com.sun.mail.smtp.SMTPSendFailedException:530 5.7 . 0 Authenticationrequired
  5. IhavereasontobelieveSMTPAppenderisborkedonanythingauthenticationrelatedbecauseyourauthenticationpropertiesarereadafterthejavax.mail.Sessioniscreated.Thefollowingiscodefor anoverriddenSMTPAppenderthattakesoverthesessioncreation.
  6. viewsourceprint?01 . import java.security.Security;
  7. 02 . import java.util.Properties;
  8. 03 . import javax.mail.PasswordAuthentication;
  9. 04 . import javax.mail.Session;
  10. 05 . import org.apache.log4j.net.SMTPAppender;
  11. 06 .
  12. 07 . public class SMTPSSLAppender extends SMTPAppender{
  13. 08 .
  14. 09 .
  15. public SMTPSSLAppender(){
  16. 10 .
  17. Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
  18. 11 .
  19. }
  20. 12 .
  21. 13 .
  22. @Override
  23. 14 .
  24. protected SessioncreateSession(){
  25. 15 .
  26. Propertiesproperties=new Properties();
  27. 16 .
  28. properties.setProperty("mail.transport.protocol" , "smtp" );
  29. 17 .
  30. properties.setProperty("mail.host" ,getSMTPHost());
  31. 18 .
  32. properties.put("mail.smtp.auth" , "true" );
  33. 19 .
  34. properties.put("mail.smtp.port" , "465" );
  35. 20 .
  36. properties.put("mail.smtp.socketFactory.port" , "465" );
  37. 21 .
  38. properties.put("mail.smtp.socketFactory.class" , "javax.net.ssl.SSLSocketFactory" );
  39. 22 .
  40. properties.put("mail.smtp.socketFactory.fallback" , "false" );
  41. 23 .
  42. properties.setProperty("mail.smtp.quitwait" , "false" );
  43. 24 .
  44. 25 .
  45. Sessionsession=Session.getDefaultInstance(properties,new javax.mail.Authenticator(){
  46. 26 .
  47. protected PasswordAuthenticationgetPasswordAuthentication()
  48. 27 .
  49. {return new PasswordAuthentication(getSMTPUsername(),getSMTPPassword());}
  50. 28 .
  51. });
  52. 29 .
  53. 30 .
  54. return session;
  55. 31 .
  56. }
  57. 32 .}Andthelog4j.propertieswouldhavesomethinglike:
  58. viewsourceprint?01 .log4j.appender.mail=SMTPSSLAppender
  59. 02 .log4j.appender.mail.SMTPHost=smtp.gmail.com
  60. 03 .log4j.appender.mail.SMTPUsername=myusername
  61. 04 .log4j.appender.mail.SMTPPassword=mypassword
  62. 05 .log4j.appender.mail.BufferSize= 1
  63. 06 .log4j.appender.mail.Subject=ZOMGsomeerroroccured!
  64. 07 .log4j.appender.mail.To=my @email .com
  65. 08 .log4j.appender.mail.threshold=error
  66. 09 .log4j.appender.mail.layout=org.apache.log4j.PatternLayout
  67. 10 .log4j.appender.mail.layout.ConversionPattern=%d{ABSOLUTE}%5p%c{ 1 }:%L-%m%nOfcourse,overridingsessioncreationbreaksalotofthings,butitstillhasthe 20 %offunctionalitythat 80 %offolkswilluse
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值