3
我有一個主要問題,試圖讓我的Log4j在發生問題時發送SMTP電子郵件。這裏是我的代碼:Log4j SMTP發送錯誤消息到電子郵件
final Properties properties = new Properties();
final String strProperties = "log4j.rootLogger=ERROR, console, smtp\n"
+ "log4j.appender.console=org.apache.log4j.ConsoleAppender\n"
+ "log4j.appender.console.Target=System.out\n"
+ "log4j.appender.console.layout=org.apache.log4j.PatternLayout\n"
+ "log4j.appender.console.layout.ConversionPattern=%-5p: %c - %m%n\n"
+ "log4j.appender.smtp=org.apache.log4j.net.SMTPAppender\n"
+ "log4j.appender.smtp.EvaluatorClass=com.blah.blah.log4j.TriggerOnError\n"
+ "log4j.appender.smtp.SMTPHost=localhost\n"
+ "[email protected]\n"
+ "[email protected]\n"
+ "log4j.appender.smtp.Subject=BagBox ERROR\n"
+ "log4j.appender.smtp.layout=org.apache.log4j.PatternLayout\n"
+ "log4j.appender.smtp.threshold=INFO\n"
+ "log4j.appender.smtp.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} : %-40c : %-5p %x - %m %n\n"
+ "log4j.logger.com.blah.blah.service.BagBoxService=INFO, smtp\n"
+ "log4j.logger.com.blah.blah.security=INFO, smtp\n"
+ "log4j.logger.org.springframework.core=ERROR, console, smtp\n"
+ "log4j.logger.org.springframework.beans=ERROR, console, smtp\n"
+ "log4j.logger.org.springframework.context=ERROR, console, smtp\n"
+ "log4j.logger.org.springframework.web=ERROR, console, smtp\n"
+ "log4j.logger.org.springframework.web.servlet.DispatcherServlet=ERROR, console, smtp\n"
+ "log4j.logger.org.springframework.security=ERROR, console, smtp\n"
+ "log4j.logger.org.springframework.aop=ERROR, console, smtp\n"
+ "log4j.logger.org.springframework.ui=ERROR, console, smtp\n";
final ByteArrayInputStream byteProperties = new ByteArrayInputStream(
strProperties.getBytes());
properties.load(byteProperties);
PropertyConfigurator.configure(properties);
我不斷收到在我的控制檯以下錯誤:
Could not connect to SMTP host: localhost, port: 25;
nested exception is:
java.net.SocketException: Network is unreachable: connect
如果我上運行的IP地址的telnet,它回來很好,可以正常連接。誰能告訴我我做錯了什麼?謝謝。
實際上我確實有這樣的工作。但是,現在我有一個不同的問題。如果log4j向DB發送消息時出現問題(即無法連接到MySQL),它將不會發送電子郵件。如果數據庫部分失敗,log4j的電子郵件部分仍然可以工作嗎? – snowfi6916 2013-03-04 20:37:03
如果沒有看到您的代碼和數據庫appender配置,這是不可能的。但是,一般來說,您可能需要查看['FailoverAppender'](http://logging.apache.org/log4j/2.x/manual/appenders.html),並將數據庫appender定義爲您的主要和SMTP作爲故障轉移/次要。不確定它恰好適合你的用例,但你可以從那裏工作。 – 2013-03-05 07:43:05
我想我的問題是,如果log4j本身出現錯誤,您將如何發送電子郵件?它沒有發送的原因是因爲它仍然是INFO級別,但是有'log4j:ERROR JDBCAppender :: append(),沒有準備好追加!',那麼我會如何給它發電子郵件? – snowfi6916 2013-03-05 13:46:03