http://jlk.iteye.com/blog/354216
项目上线后,运行时往往也还会有异常发生,在异常抛出时,希望即时的得到反馈。所以需要配置LOG4J
的发送EMAIL
功能。
项目中原来使用的的Log4j
版本为1.2.9 ,但此版本并不支持邮件服务的认证功能 ,遂重新下载了最新的版本1.2.14 ,查看源代码
此版本支持认证功能 ,下面是 log4j
.properties 的具体配置 :
## ROOT
log4j
.rootLogger=INFO,CONSOLE,A_default,MAIL
## CONSOLE
log4j
.appender.CONSOLE=org.apache.log4j
.ConsoleAppender
log4j
.appender.Threshold=INFO
log4j
.appender.CONSOLE.Target=System.out
log4j
.appender.CONSOLE.layout=org.apache.log4j
.PatternLayout
#log4j
.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
log4j
.appender.CONSOLE.layout.ConversionPattern=[调试信息]%-5p %c %x - %m%n
## A_default
log4j
.appender.A_default=org.apache.log4j
.RollingFileAppender
log4j
.appender.A_default.Threshold=INFO
log4j
.appender.A_default.File=${webframe.root}/WEB-INF/logs/railstone.log
log4j
.appender.A_default.MaxFileSize=4000KB
log4j
.appender.A_default.MaxBackupIndex=10
log4j
.appender.A_default.layout=org.apache.log4j
.PatternLayout
log4j
.appender.A_default.layout.ConversionPattern=[调试信息]%-5p %c %x - %m%n
## MAIL
log4j
.appender.MAIL=org.apache.log4j
.net.SMTPAppender
# 日志的错误级别
log4j
.appender.MAIL.Threshold=ERROR
# 缓存文件大小,日志达到512K时发送Email
log4j
.appender.MAIL.BufferSize=512
# 发送邮件的服务器
log4j
.appender.MAIL.SMTPHost=smtp.163.com
# 邮件的标题
log4j
.appender.MAIL.Subject=Log4J
ErrorMessage
# 用户名
log4j
.appender.MAIL.SMTPUsername=邮箱用户名
# 密码
log4j
.appender.MAIL.SMTPPassword=邮箱密码
# 发件人地址
log4j
.appender.MAIL.From=test@163.com
# 日志邮件的接收者
log4j
.appender.MAIL.To=test@163.com
# 日志PatternLayout
log4j
.appender.MAIL.layout=org.apache.log4j
.PatternLayout
# 日志的格式
log4j
.appender.MAIL.layout.ConversionPattern=[ErrorMessage
] %d - %c -%-4r [%t] %-5p %c %x - %m%n
在配置完毕后,发现 即使是将 log4j
.appender.MAIL.Threshold=ERROR
修改为 INFO 级别 ,也只有在日志输出级别为 ERROR (即代码中调用logger.error("message")方法)时才会发送邮件,不知道是什么原因,
Log4J
发日志邮件给多个接收者及标题、正文乱码问题
利用javamail发送邮件,你需要导入包mail.jar和activation.jar这两个包 ,否则是没法发邮件的 ,下边配置文件里绿色行显示的就是发给两个接收者ac和ae。
这里会出现中文乱码问题,主要有两方面的乱码,一是标题乱码;二是正文乱码。下边具体说明这两种乱码的解决方案。
一、 标题乱码
Log4J
日志邮件的标题在配置文件log4j
.properties里设定,如下
log4j
.appender.MAIL=org.apache.log4j
.net.SMTPAppender
log4j
.appender.MAIL.Threshold=FATAL
log4j
.appender.MAIL.BufferSize=10
log4j
.appender.MAIL.From=ab@163.com
log4j
.appender.MAIL.SMTPHost=smtp@163.com
log4j
.appender.MAIL.Subject= Log4J
提醒您:系统发生了严重错误
log4j
.appender.MAIL.To=ac
@163.com,ae@163.com
log4j
.appender.MAIL.layout=com.sun.DefineLayOut
log4j
.appender.MAIL.layout.LocationInfo=true
灰色的行就是标题,log4J
配置文件默认的读取方式是ISO-88591,遇到中文会出现乱码,我们可以把这个配置文件log4j
.properties用jdk的工具native2asii转换一下编码方式。
命令:native2asii log4j
.properties log4jxx.properties
把这个log4jxx.properties改名为log4j
.properties取代原来的log4j
.properties就ok了。
灰色行重新编码后是:
log4j
.appender.MAIL.Subject=Log4J
\u63d0\u9192\u60a8\uff1a\u7cfb\u7edf\u53d1\u751f\u4e86\u4e25\u91cd\u9519\u8bef
二、 正文乱码
正文乱码,解决也比较简单。阅读Log4J
的源码类SMTPAppender,我们可以发现sendBuffer()方法中有这样一句:
part.setContent(sbuf.toString(), layout.getContentType());
我们继续追踪发现layout就是配置文件里的layout属性对应的布局模式。但是这些布局模式都是继承自Layout,而contentType是只
可通过getContentType方法取得,不能修改。所有的布局模式getContentType方法返回的都是”text/plain”;
为处理中文乱码,我们可以写一个布局模式。如果你要使用HTMLLayout,我们就写一个HTMLLayout的子类,覆盖HTMLLayout的
getContentType方法即可。假如我要用org.apache.log4j
.HTMLLayout。我们就可以写一个DefineLayOut
类,代码如下:
package com.sun;
import org.apache.log4j
.HTMLLayout;
public class DefineLayOut extends HTMLLayout{
public String getContentType() {
return "text/html;charset=GBK";
}
}
对应的配置文件设置如黄色行所示。
分享到:
相关推荐
虚拟机vmware workstatiions pro 17.6.1个人使用免费,不用证书直接安装使用
scipy-1.2.0-cp35-cp35m-linux_armv7l.whl
基于springboot爬虫高考志愿智能推荐系统源码数据库文档.zip
bimdata_api_client-4.3.0-py3-none-any.whl
Pillow-7.0.0-cp37-cp37m-linux_armv7l.whl
onnxruntime-1.16.2-cp38-cp38-win_amd64.whl
opencv_python-4.4.0.46-cp39-cp39-linux_armv7l.whl
论文描述:该论文研究了某一特定领域的问题,并提出了新的解决方案。论文首先对问题进行了详细的分析和理解,并对已有的研究成果进行了综述。然后,论文提出了一种全新的解决方案,包括算法、模型或方法。在整个研究过程中,论文使用了合适的实验设计和数据集,并进行了充分的实验验证。最后,论文对解决方案的性能进行了全面的评估和分析,并提出了进一步的研究方向。 源码内容描述:该源码实现了论文中提出的新的解决方案。源码中包含了算法、模型或方法的具体实现代码,以及相关的数据预处理、实验设计和性能评估代码。源码中还包括了合适的注释和文档,以方便其他研究者理解和使用。源码的实现应该具有可读性、可维护性和高效性,并能够复现论文中的实验结果。此外,源码还应该尽可能具有通用性,以便在其他类似问题上进行进一步的应用和扩展。
ta_lib-0.5.1-cp313-cp313-win32.whl
STM32开发相关软件ISP 程序下载STM32开发相关软件ISP 程序下载提取方式是百度网盘分享地址
java源码资源基于JAVA的UDP服务器模型源代码提取方式是百度网盘分享地址
基于Python+Django的电影票房数据分析系统源码数据库文档.zip
onnxruntime-1.19.0-cp311-cp311-win_amd64.whl
Java固定资产管理系统源码 固定资产管理系统是对高校固定资产的一个信息化管理系统,基本功能包括:对固定资产的购进、接触、销毁,对物品的使用状态、借出状态、库存状态等进行标识,对各类物品进行编号,根据编号进行查询,根据名称进行查询等。本系统结构如下: (1)系统登录:用户登录模块:登录功能 重置 (2)系统用户管理:对系统用户的增加 系统用户的权限修改 系统用户的删除 分配系统用户的权限 修改本身登录密码 资产的相关维护 (3)员工信息管理:教工的增加、修改、删除、查询 (4)资产入库管理:资产的属性修改 资产的报废删除 资产的属性查询 (5)资产维护管理:物资的维修、维护物资的信息修改 (6)资产借还管理:增加借出资产 查询借出资产 归还已借出资产(7)打印报表
matplotlib-3.7.0-cp311-cp311-linux_armv7l.whl
基于springboot的房屋租赁管理系统源码数据库文档.zip
opencv_contrib_python-4.1.0.25-cp35-cp35m-linux_armv7l.whl
bimdata_api_client-3.1.0-py3-none-any.whl
本23级物流01班谭敏20234970114.docx
opencv_contrib_python-4.5.2.52-cp39-cp39-linux_armv7l.whl