项目上线后,运行时往往也还会有异常发生,在异常抛出时,希望即时的得到反馈。所以需要配置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";
}
}
对应的配置文件设置如黄色行所示。
分享到:
相关推荐
在本实例中,我们将探讨如何使用Log4j配置来实现当系统出现error时自动发送电子邮件的功能。 首先,我们需要了解Log4j的基本配置结构。一个典型的Log4j配置文件(通常是`log4j.properties`或`log4j.xml`)包含了...
2. **Log4j配置**:要使用Log4j发送邮件,首先需要在项目的配置文件(通常是`log4j.properties`或`log4j.xml`)中添加适当的配置,包括设置SMTP服务器信息、发件人和收件人地址,以及触发发送邮件的日志级别。...
配置Log4j发送日志邮件主要涉及以下几个步骤: 1. **配置log4j.properties文件**:这是Log4j的配置文件,我们需要在这里定义Appender。添加以下内容: ```properties # 定义一个SMTP Appender log4j.appender.SMTP...
在这个特定的配置场景中,我们将探讨如何设置log4j,使其能将不同级别的日志信息分别记录到不同的文件中,并且具备发送邮件通知的能力。 首先,我们需要创建一个log4j的配置文件,通常命名为`log4j.properties`。这...
在Spring项目中配置log4j是一项基础且重要的工作,它能帮助我们记录应用程序的运行日志,便于调试、排查问题和性能分析。Log4j是一个广泛使用的Java日志框架,提供灵活的日志记录功能。接下来,我们将详细讲解如何在...
本文将深入探讨Log4j发送邮件的功能,以及涉及到的log4j-1.2.16.jar、mail.jar和activation.jar这三个关键文件。 Log4j是一个开源的日志框架,最初由Apache软件基金会开发。它为Java应用程序提供了灵活的日志记录...
Log4j的配置通常通过`log4j.properties`或`log4j.xml`文件完成。以`log4j.properties`为例,我们可以通过以下配置创建一个输出到控制台的日志器: ```properties # 配置控制台输出 log4j.rootLogger=DEBUG, Console...
本实战项目旨在帮助开发者掌握Web应用程序的实现,包括使用MVC设计模式、数据源(DataSource)、数据传输对象(DTO)、数据访问对象(DAO)、电子邮件发送以及日志管理工具Log4J的配置。此外,还将涉及文件上传功能...
### 四、配置文件`log4j.properties` `log4j.properties`是Log4j的主要配置文件,用于定义日志级别、目的地和格式。以下是一个基本的配置示例: ```properties # 设置全局日志级别为INFO log4j.rootLogger=INFO, ...
在Log4j中,通常使用配置文件(如log4j.properties或log4j.xml)来设定日志行为。例如: ```properties # log4j.properties 示例 log4j.rootLogger=DEBUG, FILE log4j.appender.FILE=org.apache.log4j.FileAppender...
已经配置好的log4j properties 文件,输出到控制台和C:\logs\log.txt 文件,输出级别是ERROR. 可以配置smtp 服务器,当发生error级别错误时,自动发送email
为了实现这个功能,首先需要在Log4j的配置文件(通常是log4j.properties或log4j.xml)中设置一个Appender(日志输出器),这个Appender类型是SMTPAppender,用于发送邮件。SMTPAppender需要配置SMTP服务器的地址、...
4. **日志Appender**:log4php 提供了多种 Appender 类,例如 FileAppender 将日志写入文件,ConsoleAppender 输出到控制台,MailAppender 可以通过 Email 发送错误报告等。 5. **过滤器**:允许开发者设置过滤规则...
`log4perl` 是一个专门为 Perl 语言设计的日志记录框架,灵感来源于 Java 平台上的著名日志库 `log4j`。它的核心目标是提供灵活、高效且可扩展的日志处理能力,使得开发者能够方便地控制应用程序中的日志输出,从而...
log4pb调用演示例子, 思想仿log4j // 2. 集成对象到application, // 3. 组件文件: log4pb90.pdb + callback.pbd, // 4. SQL目录包含一些数据库对象,目前支持postgresql和MS SQL(修改下表log4pb_log可支持其他...
【标题】"LOG IN ERROR EMAIL TO SB" 是一个与登录错误和自动发送电子邮件相关的主题。在IT领域,这通常指的是当用户尝试登录系统时遇到错误,系统会自动向指定的邮箱地址("SB"可能是“Support Bot”或“System ...
同时,为了便于排查问题,可以集成日志框架如Log4j或SLF4J,记录发送过程中的重要信息。 8. 多线程支持: 如果需要大量发送邮件,工具类可以支持多线程发送,提高效率并避免因单个邮件发送失败而阻塞整个进程。 9...
同时,为了支持邮件发送功能,还需要引入`javax.mail-1.5.2.jar`和`log4j-over-slf4j-1.7.25.jar`这两个外部库。 1. **邮件发送**: 邮件发送是通过SMTP(Simple Mail Transfer Protocol)协议来实现的,这是一种...
1. **log4j-1.2.14.jar**:这是一个日志处理框架Log4j的版本1.2.14的JAR文件,常用于记录程序运行时的日志信息,有助于调试和问题追踪。 2. **mail.jar**:这是JavaMail API的JAR文件,包含了发送和接收电子邮件所...