log4j.appender.ERROREMAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.ERROREMAIL.SMTPHost=www.company.com
log4j.appender.ERROREMAIL.Threshold=ERROR
log4j.appender.ERROREMAIL.To=email.address1@company.com,email.address2@company.com,email.address3@company.com
log4j.appender.ERROREMAIL.From=some.emailaddress.com
log4j.appender.ERROREMAIL.Subject=messagesubject1
我使用上述log4j属性文件发送电子邮件
log.error("Error message");
如何使其动态化,以便消息主题可以根据计算机名称(环境名称)动态更改。
例如:
log4j.appender.ERROREMAIL.Subject=messagesubject1, messagesubject2, messagesubject3
我想根据计算机名称动态使用主题1、2和3。
任何帮助都将不胜感激。谢谢
6条答案
按热度按时间c86crjj01#
我可以想到两个解决方案:
1.编写您自己的记录器,该记录器将使用SMTPAppender并以编程方式设置属性。
1.使用MDC在代码中放置一个动态值。你可以使用
%X
从log4j.xml中的MDC获取值。例如:
tvokkenx2#
如果我们正在读取属性并添加主题throw java代码,则会出现并发请求问题。
如果第一个用户在发送邮件之前修改了主题并做了其他操作,同时第二个用户添加了不同的主题,第一个用户也得到了第二个用户的主题。
mrfwxfqh3#
您只需要使用hostname变量,如下所示:
根据您的特定配置和操作系统,您可能需要在启动时使用-Dhostname ='machinename'或-Dhostname=$HOST将此变量提供给JVM
nzk0hqpo4#
在下面的代码中,我读取了 log4j.properties 文件,将属性log4j.appender.ERROREMAIL.Subject设置为emailRecipients,并重置log4j配置。可以在应用程序开始时完成,只需将 emailRecepients 字符串设置正确即可。
nue99wik5#
设置用户名或ENV变量
zdwk9cvp6#