我想在完成java任务后只向电子邮件组发送一次电子邮件。
在log4j属性中,我可以发送电子邮件,但会为每个日志语句触发电子邮件。
但我的要求是在所有任务完成后发送邮件,也就是说启动java程序,做一些处理,这将有多个日志语句,然后发送邮件。
下面是我的log4j smtp属性列表。
# log4j.rootLogger=DEBUG, sendMail
# log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# log4j.appender.stdout.layout.ConversionPattern=[%5p] %d{mm:ss} (%F:%M:%L)%n%m%n%n
# log4j.appender.sendMail=org.apache.log4j.net.SMTPAppender
## log4j.appender.sendMail.Threshold=WARN
# log4j.appender.sendMail.To=xx@domain.com
# log4j.appender.sendMail.From=xx@domain.com
# log4j.appender.sendMail.SMTPHost=10.13.16.57
# log4j.appender.sendMail.Subject=Log4J Message
# log4j.appender.sendMail.layout=org.apache.log4j.PatternLayout
# log4j.appender.sendMail.layout.ConversionPattern=%p %t %c - %m%n
# log4j.appender.sendMail.BufferSize=1
# log4j.appender.sendMail.SMTPDebug=true
2条答案
按热度按时间rta7y2nd1#
由于您希望在批处理运行结束时发送一封电子邮件,因此最好将所有消息聚合到某种大字符串中,然后使用Spring的
JavaMailSender
发送一封电子邮件。您可以在使用
JavaMailSender
发送电子邮件时找到various articles,但实际上您需要首先在Spring配置中配置它的一个示例:然后,在客户端(批处理作业或其他任何作业)中,可以为
JavaMailSender
指定一个autowired字段:然后就可以创建和发送消息:
这是基础知识--但是您会在Web上找到大量其他文章和文档更详细地讨论它。
cgvd09ve2#
在XML中定义log4j配置,并添加一个logger元素作为logger名称。
请参阅log4j XML format和Log4j config
在您的程式码中: