posts - 60,comments - 71,trackbacks - 0

              以前開發的系統沒有單獨的日志管理,所有的日志統一輸出到tomcat后臺一個文件里,不幾天就是好幾G,現在要整體增加一個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";
          }
          }
          對應的配置文件設置如黃色行所示。 

              呵呵,覺得第二點的思路不錯,即要學會怎樣改開源的東西,以適合自已所需.

          posted on 2008-06-02 10:02 henry1451 閱讀(968) 評論(0)  編輯  收藏 所屬分類: 開源技術
          主站蜘蛛池模板: 怀仁县| 绥宁县| 巴东县| 焦作市| 团风县| 怀柔区| 长春市| 天等县| 靖州| 石嘴山市| 专栏| 社会| 灵丘县| 广德县| 安泽县| 若羌县| 冕宁县| 宜章县| 中方县| 云霄县| 法库县| 元阳县| 瑞安市| 武定县| 张家港市| 武清区| 灵川县| 河间市| 乡城县| 霸州市| 漳州市| 加查县| 张北县| 白城市| 吴川市| 阳山县| 乐昌市| 海口市| 大英县| 齐河县| 桐庐县|