我有一个问题:我有以下lo4j.xml和类但是我没有找到如何配置log4j以便在类中有INFO日志时发送邮件(ERROR邮件工作)。
这是我的log4j.xml:
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="info"/>
<param name="LevelMax" value="fatal"/>
</filter>
</appender>
<appender name="mailAppender" class="org.apache.log4j.net.SMTPAppender">
<param name="BufferSize" value="1" />
<param name="SMTPHost" value="xxx" />
<param name="SMTPPort" value="25" />
<param name="SMTPUsername" value="xxx@xxx.fr" />
<param name="SMTPPassword" value="xxx" />
<param name="From" value="yyyy@yyyy.fr" />
<param name="To" value="zzzz@zzzz.fr" />
<param name="Subject" value="[Projet] - Message" />
<param name="Threshold" value="info" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="info" />
<param name="LevelMax" value="fatal" />
</filter>
</appender>
<logger name="g.integration.common.Mailer">
<appender-ref ref="mailAppender" />
</logger>
<root>
<appender-ref ref="STDOUT" />
</root>
上课:
public class Mailer {
private static final Logger logger = Logger.getLogger(Mailer.class);
private static final String MAIL_INFO_MESSAGE = "Bonjour,\nLe traitement suivant s'est déroulé avec succès :\n";
private static final String MAIL_ERROR_MESSAGE = "Bonjour,\nUne erreur est survenue lors du traitement MGAS"
+ "\nVoici la trace de l'erreur relevée :\n\n";
/**
* Envoie un mail d'information
*
* @param mailString
*/
public void logSuccessMail(final String mailString) {
logger.info(MAIL_INFO_MESSAGE + mailString);
}
/**
* Envoie un mail d'erreur
*
* @param mailString
*/
public void logErrorMail(final String mailString) {
logger.error(MAIL_ERROR_MESSAGE + mailString);
}
}
你知道吗?
在此先感谢并抱歉格式化..当我找到时,我会纠正它
答案 0 :(得分:0)
SMTPAppender按设计仅记录ERROR及以上消息。
默认情况下,当ERROR或更高版本时,将发送电子邮件 附加严重性消息。可以修改触发条件 通过使用类的名称设置evaluateatorClass属性 实现TriggeringEventEvaluator,设置evaluateator属性 使用TriggeringEventEvaluator的实例或嵌套a 指定类实现的triggeringPolicy元素 TriggeringEventEvaluator。
设置阈值不起作用。您需要具有TriggeringEventEvaluator的自定义实现。以下代码有效。
<appender name="mailAppender" class="org.apache.log4j.net.SMTPAppender">
<param name="BufferSize" value="1" />
<param name="SMTPHost" value="xxx" />
<param name="SMTPPort" value="25" />
<param name="SMTPUsername" value="xxx@xxx.fr" />
<param name="SMTPPassword" value="xxx" />
<param name="From" value="yyyy@yyyy.fr" />
<param name="To" value="zzzz@zzzz.fr" />
<param name="Subject" value="[Projet] - Message" />
<param name="evaluatorClass" value="myapp.EmailTriggerEvaluator"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
</appender>
public class EmailTriggerEvaluator implements TriggeringEventEvaluator {
@Override
public boolean isTriggeringEvent(LoggingEvent event) {
return event.getLevel().isGreaterOrEqual(Level.INFO);
}
}