最近想把错误日志发到邮箱里,以便及时发现应用出了什么异常。
用的应用服务器是jboss as 6 final.
这个版本带的log4j,jar,不知道是什么版本的,没有SMTUsername和SMTPassword 。这两个属性用于登录邮箱服务器。
所以换成了log4j-1.25.jar .
配置jboss-logging.xml,在%JBOSS_HOME%\server\default\deploy\ 下面。
<!-- EMail events to an administrator
-->
<log4j-appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
<error-manager>
<only-once/>
</error-manager>
<level name="ERROR"/>
<properties>
<property name="to">xxx@xx.com</property>
<!-- 多个人 用逗号分开
<property name="to">xxx@xx.com,xxx@xx.com</property>
抄送,密送
<property name="cc">xxx@xx.com,xxx@xx.com</property>
<property name="bcc">xxx@xx.com,xxx@xx.com</property>
-->
<property name="from">xxx@xxxx.com</property> <property name="subject">JBoss Sever Errors</property> <property name="SMTPHost">xxx.com</property>
<property name="SMTPUsername">xxxx</property>
<property name="SMTPPassword">xxxx</property>
<property name="bufferSize">512</property> </properties> <formatter> <pattern-formatter pattern="%d %-5p [%c] (%t) %m%n"/> </formatter> </log4j-appender> <root-logger> <!-- Set the root logger priority via a system property, with a default value. --> <level name="${jboss.server.log.threshold:INFO}"/> <handlers> <handler-ref name="CONSOLE"/> <handler-ref name="FILE"/>
<handler-ref name="SMTP"/>
</handlers> </root-logger>
配置好后,运行,当产生错误时,报异常了,
ERROR [STDERR] log4j:ERROR Message object not configured.
在jboss社区找到了,解决方法。
https://issues.jboss.org/browse/JBAS-8791
需要替换3个jar包 http://download.csdn.net/detail/zuxianghuang/5689569jboss-logmanager
jboss-logmanager.jar ,jboss-logmanager-log4j.jar,logging-service-metadata.jar
jboss-logmanager.jar这个替换%JBOSS_HOME%\lib\下面的
jboss-logmanager-log4j.jar这个替换%JBOSS_HOME%\common\lib下面的
logging-service-metadata.jar这个替换%JBOSS_HOME%\server\default\deployers\jboss-logging.deployer\下面的
经过这些配置,就可以通过log4j发错误日志到,邮箱了。
<property name="bufferSize">512</property> 这个是邮件的大小默认512。可以根据情况设置。