1. 程式人生 > >輕鬆配置log4j實現錯誤日誌email通知

輕鬆配置log4j實現錯誤日誌email通知

 轉載:http://www.blogjava.net/sxyx2008/

需求描述:任何程式都會存在bug,雖然專案經過反覆測試,已經上線運行了,但難免會遇到各種錯誤,在這裡輕鬆配置log4j實現錯誤訊息的email通知.
        兩個檔案:web.xml log4j.properties
        web.xml

        在web.xml中新增如下程式碼

<!-- 設定上下文引數 -->
    <context-param>
        <!-- log4j配置檔案位置 -->
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j.properties</param-value>
    </context-param>
    <context-param>
        <param-name>log4jRefreshInterval</param-name>
        <param-value>6000</param-value>
    </context-param>
    <!-- log4j監聽器 -->
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

log4j.properties
## ROOT
log4j.rootLogger=INFO,CONSOLE,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=[\u8C03\u8BD5\u4FE1\u606F]%-5p %c %x - %m%n

## File
log4j.appender.A_default=org.apache.log4j.RollingFileAppender
log4j.appender.A_default.Threshold=INFO
log4j.appender.A_default.File=e\:/logs/log4j.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=[\u8C03\u8BD5\u4FE1\u606F]%-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=10
# 傳送郵件的伺服器
log4j.appender.MAIL.SMTPHost=smtp.163.com
# 郵件的標題
log4j.appender.MAIL.Subject=\u6D4B\u8BD5log4j\u8F93\u51FA\u9519\u8BEF\u4FE1\u606F\u5230\u65E5\u5FD7
# 使用者名稱
log4j.appender.MAIL.SMTPUsername=你的使用者名稱
# 密碼
log4j.appender.MAIL.SMTPPassword=你的密碼
# 發件人地址
[email protected]
# 日誌郵件的接收者 [email protected] # 日誌PatternLayout log4j.appender.MAIL.layout=com.quartz.demo.Loger4JHTMLLayOut # 日誌的格式 log4j.appender.MAIL.layout.ConversionPattern=[ErrorMessage] %d - %c -%-4r [%t] %-5p %c %x - %m%n

注:在以上log4j.properties檔案中配置了自己的自定義layout,由於log4j預設採用的純文字方式.這樣不便於我們在郵件中檢視,因此覆蓋它的layout,自定義屬於我們自己的layout
        自定義類com.quartz.demo.Loger4JHTMLLayOut完成了該功能
package com.quartz.demo;

import org.apache.log4j.HTMLLayout;

public class Loger4JHTMLLayOut extends HTMLLayout{
    
    @Override
    public String getContentType() {
        return "text/html;charset=utf-8"; 
    }
}

 即:只需設定contentType為text/html即可
        效果圖:

log4j.properties