日誌工具類v1.0

來源:互聯網
上載者:User

這裡用的是Log4j-1.2.15

下面是日誌工具類v1.0

package com.jadyer.util;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/** * 日誌工具類 * @see =============================================================================================================== * @see 【用法如下】 * @see 說明:在想要記錄日誌的位置,執行LogUtil.setXxxLogger(),然後就可以LogUtil.getLogger().info("....") * @see 舉例:假設一個SSH2工程中有個名為userLogin()的Action方法,其內部調用了UserService,UserService內部又調用了UserDAO * @see      我們在userLogin()、UserService、UserDAO中均使用了LogUtil.getLogger().info("....")記錄相應的日誌資訊 * @see      這時,我們的日誌資訊,會被自動記錄到ecpaycus-default.log檔案中 * @see      同理,我們若在userLogin()方法的第一句話執行LogUtil.setWebCusLogger() * @see           則日誌會被自動寫入ecpaycus-webcus.log檔案中,而不會寫入到ecpaycus-default.log中了 * @see =============================================================================================================== * @author  http://blog.csdn.net/jadyer * @version v1.0 * @editime Apr 28, 2012 2:10:45 PM * @created Dec 27, 2011 12:03:01 PM */public class LogUtil {//自訂線程範圍內共用的對象。即它會針對不同線程分別建立獨立的對象//此時每個線程得到的將是自己的執行個體,各線程間得到的執行個體沒有任何關聯private static ThreadLocal<Log> currentLoggerMap = new ThreadLocal<Log>();/**web定製日誌記錄器*/private static Log webCusLogger = LogFactory.getLog("ecpaycusWebCusLogger");/**預設日誌記錄器*/private static Log defaultLogger = LogFactory.getLog("ecpaycusDefaultLogger");/**對賬檔案日誌記錄器*/private static Log recFileLogger = LogFactory.getLog("ecpaycusRecFileLogger");private LogUtil(){}/** * 擷取當前線程中的日誌記錄器 * @author 宏宇 * @create May 2, 2012 1:40:49 PM */public static Log getLogger() {Log log = currentLoggerMap.get();if(null == log){return defaultLogger;}else{return log;}}/** * Web定製日誌記錄器 * @author 宏宇 * @create Apr 28, 2012 2:10:45 PM */public static void setWebCusLogger(){//每個線程調用全域的ThreadLocal.set()方法//相當於在其內部的Map中增加一條記錄,key是各自的線程,value是各自set()的值//取的時候,直接ThreadLocal.get()即可。。。。。。。。。至於其內部實現,你懂的//我部落格裡對此有記載:http://blog.csdn.net/jadyer/article/details/7338071//Struts2就是這麼做的,請見com.opensymphony.xwork2.ActionContex第43和166行源碼currentLoggerMap.set(webCusLogger);}/** * 預設日誌記錄器 * @author http://blog.csdn/net/jadyer * @create May 17, 2012 5:14:02 PM */public static void setDefaultLogger(){currentLoggerMap.set(defaultLogger);}/** * 對賬檔案日誌記錄器 * @author 宏宇 * @create Apr 28, 2012 2:17:10 PM */public static void setRecFileLogger(){currentLoggerMap.set(recFileLogger);}}

下面是Log4j的設定檔log4j.properties

#use Rootlog4j.rootLogger=DEBUG,CONSOLElog4j.logger.ecpaycusWebCusLogger=DEBUG,ECPAYCUS_WEBCUS_LOGlog4j.logger.ecpaycusDefaultLogger=DEBUG,ECPAYCUS_DEFAULT_LOGlog4j.logger.ecpaycusRecFileLogger=DEBUG,ECPAYCUS_RECFILE_LOGlog4j.additivity.ecpaycusWebCusLogger=truelog4j.additivity.ecpaycusDefaultLogger=truelog4j.additivity.ecpaycusRecFileLogger=true#use Consolelog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.Threshold=DEBUGlog4j.appender.CONSOLE.Target=System.outlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout#log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyyMMdd HH:mm:ss} %p] %F.%M()\u2605\u2605%m%n#log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyyMMdd HH:mm:ss}][%t][%F.%M]%m%n#log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyyMMdd HH:mm:ss}][%t][%C.%M]%m%nlog4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyyMMdd HH:mm:ss}][%t][%C{1}.%M]%m%n#use DailyRollFile for WebCuslog4j.appender.ECPAYCUS_WEBCUS_LOG=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.ECPAYCUS_WEBCUS_LOG.File=../logs/ecpaycus-webcus.loglog4j.appender.ECPAYCUS_WEBCUS_LOG.encoding=UTF-8log4j.appender.ECPAYCUS_WEBCUS_LOG.Threshold=DEBUGlog4j.appender.ECPAYCUS_WEBCUS_LOG.DatePattern='.'yyyyMMddlog4j.appender.ECPAYCUS_WEBCUS_LOG.layout=org.apache.log4j.PatternLayoutlog4j.appender.ECPAYCUS_WEBCUS_LOG.layout.ConversionPattern=[%d{yyyyMMdd HH:mm:ss} %p] %F.%M()\u2605\u2605%m%n#use DailyRollFile for Defaule LogFilelog4j.appender.ECPAYCUS_DEFAULT_LOG=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.ECPAYCUS_DEFAULT_LOG.File=../logs/ecpaycus-default.loglog4j.appender.ECPAYCUS_DEFAULT_LOG.encoding=UTF-8log4j.appender.ECPAYCUS_DEFAULT_LOG.Threshold=DEBUGlog4j.appender.ECPAYCUS_DEFAULT_LOG.DatePattern='.'yyyyMMddlog4j.appender.ECPAYCUS_DEFAULT_LOG.layout=org.apache.log4j.PatternLayoutlog4j.appender.ECPAYCUS_DEFAULT_LOG.layout.ConversionPattern=[%d{yyyyMMdd HH:mm:ss} %p] %F.%M()\u2605\u2605%m%n#use DailyRollFile for ReconciliationFilelog4j.appender.ECPAYCUS_RECFILE_LOG=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.ECPAYCUS_RECFILE_LOG.File=../logs/ecpaycus-recfile.loglog4j.appender.ECPAYCUS_RECFILE_LOG.encoding=UTF-8log4j.appender.ECPAYCUS_RECFILE_LOG.Threshold=DEBUGlog4j.appender.ECPAYCUS_RECFILE_LOG.DatePattern='.'yyyyMMddlog4j.appender.ECPAYCUS_RECFILE_LOG.layout=org.apache.log4j.PatternLayoutlog4j.appender.ECPAYCUS_RECFILE_LOG.layout.ConversionPattern=[%d{yyyyMMdd HH:mm:ss} %p] %F.%M()\u2605\u2605%m%n

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.