Java 基於log4j的日誌工具類

來源:互聯網
上載者:User

標籤:word   函數   dna   位置   async   end   堆棧   topic   layout   

  對log4j日誌類進行了簡單封裝,使用該封裝類的優勢在於以下兩點:

  1、不必在每個類中去建立對象,直接類名 + 方法即可

  2、可以很方便的列印出堆棧資訊

  

package com.tradeplatform.receiveorder.util;import java.io.PrintWriter;import java.io.StringWriter;import org.apache.log4j.Logger;/** * @Description 日誌記錄類 * @author panteng * @version V0.0.1 * @date 2016-09-08 */public class SysLog {    public static Logger log = Logger.getLogger(SysLog.class);        /**     * 列印警告     *      * @param obj     */    public static void warn(Object obj) {        try{            /*** 擷取輸出資訊的代碼的位置 ***/            String location = "";            StackTraceElement[] stacks = Thread.currentThread().getStackTrace();            location = stacks[2].getClassName() + "." + stacks[2].getMethodName()                    + "(" + stacks[2].getLineNumber() + ")";            /*** 是否是異常  ***/            if (obj instanceof Exception) {                Exception e = (Exception) obj;                StringWriter sw = new StringWriter();                e.printStackTrace(new PrintWriter(sw, true));                String str = sw.toString();                log.warn(location + str);            } else {                log.warn(location + obj.toString());            }        }catch (Exception e) {            // TODO: handle exception            e.printStackTrace();        }    }    /**     * 列印資訊     *      * @param obj     */    public static void info(Object obj) {        try{            /*** 擷取輸出資訊的代碼的位置 ***/            String location = "";            StackTraceElement[] stacks = Thread.currentThread().getStackTrace();            location = stacks[2].getClassName() + "." + stacks[2].getMethodName()                    + "(" + stacks[2].getLineNumber() + ")";            /*** 是否是異常  ***/            if (obj instanceof Exception) {                Exception e = (Exception) obj;                StringWriter sw = new StringWriter();                e.printStackTrace(new PrintWriter(sw, true));                String str = sw.toString();                log.info(location + str);            } else {                log.info(location + obj.toString());            }        }catch (Exception e) {            // TODO: handle exception            e.printStackTrace();        }    }    /**     * 列印錯誤     *      * @param obj     */    public static void error(Object obj) {        try{            /*** 擷取輸出資訊的代碼的位置 ***/            String location = "";            StackTraceElement[] stacks = Thread.currentThread().getStackTrace();            location = stacks[2].getClassName() + "." + stacks[2].getMethodName()                    + "(" + stacks[2].getLineNumber() + ")";                        /*** 是否是異常  ***/            if (obj instanceof Exception) {                Exception e = (Exception) obj;                StringWriter sw = new StringWriter();                e.printStackTrace(new PrintWriter(sw, true));                String str = sw.toString();                log.error(location + str);            } else {                log.error(location + obj.toString());            }        }catch (Exception e) {            // TODO: handle exception            e.printStackTrace();        }    }        /**     * 向資料庫警示表中插入資訊     * @param obj     */    public static void dbWarn(Object obj) {        try{            String printInfo = "";            /*** 擷取輸出資訊的代碼的位置 ***/            String location = "";            StackTraceElement[] stacks = Thread.currentThread().getStackTrace();            location = stacks[2].getClassName() + "." + stacks[2].getMethodName()                    + "(" + stacks[2].getLineNumber() + ")";                        /*** 是否是異常  ***/            if (obj instanceof Exception) {                Exception e = (Exception) obj;                printInfo = location + e.getMessage();                log.fatal(printInfo.substring(0, printInfo.length() > 512?512:printInfo.length()));            } else {                printInfo = location + obj.toString();                log.fatal(printInfo.substring(0, printInfo.length() > 512?512:printInfo.length()));            }        }catch (Exception e) {            // TODO: handle exception            e.printStackTrace();        }    }        /**     * 擷取調用此函數的代碼的位置     * @return 包名.類名.方法名(行數)     */    public static String getCodeLocation(){        try{            /*** 擷取輸出資訊的代碼的位置 ***/            String location = "";            StackTraceElement[] stacks = Thread.currentThread().getStackTrace();            location = stacks[2].getClassName() + "." + stacks[2].getMethodName()                    + "(" + stacks[2].getLineNumber() + ")";            return location;        }catch (Exception e) {            // TODO: handle exception            SysLog.error(e);            return "";        }    }}

  設定檔:

  

base.logs.dir=D:/testMycatLoglog4j.rootLogger = DEBUG, INFO, all_log, stdout ,DBlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS} %-5p [%-15x] [%t] - %m%nlog4j.appender.all_log=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.all_log.DatePattern=‘.‘yyyy-MM-dd-HHlog4j.appender.all_log.File=${base.logs.dir}/all_log.loglog4j.appender.all_log.layout=org.apache.log4j.PatternLayoutlog4j.appender.all_log.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS} %-5p [%-15x] [%t] - %m%nlog4j.appender.DB = org.apache.log4j.jdbc.JDBCAppenderlog4j.appender.DB.BufferSize=1log4j.appender.DB.driver=com.mysql.jdbc.Driverlog4j.appender.DB.URL=jdbc:mysql://192.168.91.231:8066/CTPDBlog4j.appender.DB.user=ctplog4j.appender.DB.password=ctplog4j.appender.DB.Threshold =FATALlog4j.appender.DB.layout = org.apache.log4j.PatternLayoutlog4j.appender.DB.sql=insert into syswarn(WARN_LEVEL,WARN_INFO) values("1",‘%m‘);#--------------kafka配置----------------#log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.kafkaAppender.DatePattern=‘.‘yyyy-MM-dd-HHlog4j.appender.kafkaAppender.File=${base.logs.dir}/server.loglog4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayoutlog4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%nlog4j.appender.stateChangeAppender=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.stateChangeAppender.DatePattern=‘.‘yyyy-MM-dd-HHlog4j.appender.stateChangeAppender.File=${base.logs.dir}/state-change.loglog4j.appender.stateChangeAppender.layout=org.apache.log4j.PatternLayoutlog4j.appender.stateChangeAppender.layout.ConversionPattern=[%d] %p %m (%c)%nlog4j.appender.requestAppender=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.requestAppender.DatePattern=‘.‘yyyy-MM-dd-HHlog4j.appender.requestAppender.File=${base.logs.dir}/kafka-request.loglog4j.appender.requestAppender.layout=org.apache.log4j.PatternLayoutlog4j.appender.requestAppender.layout.ConversionPattern=[%d] %p %m (%c)%nlog4j.appender.cleanerAppender=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.cleanerAppender.DatePattern=‘.‘yyyy-MM-dd-HHlog4j.appender.cleanerAppender.File=${base.logs.dir}/log-cleaner.loglog4j.appender.cleanerAppender.layout=org.apache.log4j.PatternLayoutlog4j.appender.cleanerAppender.layout.ConversionPattern=[%d] %p %m (%c)%nlog4j.appender.controllerAppender=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.controllerAppender.DatePattern=‘.‘yyyy-MM-dd-HHlog4j.appender.controllerAppender.File=${base.logs.dir}/controller.loglog4j.appender.controllerAppender.layout=org.apache.log4j.PatternLayoutlog4j.appender.controllerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n# Turn on all our debugging info#log4j.logger.kafka.producer.async.DefaultEventHandler=DEBUG, kafkaAppender#log4j.logger.kafka.client.ClientUtils=DEBUG, kafkaAppender#log4j.logger.kafka.perf=DEBUG, kafkaAppender#log4j.logger.kafka.perf.ProducerPerformance$ProducerThread=DEBUG, kafkaAppender#log4j.logger.org.I0Itec.zkclient.ZkClient=DEBUGlog4j.logger.kafka=INFO, kafkaAppenderlog4j.logger.kafka.network.RequestChannel$=WARN, requestAppenderlog4j.additivity.kafka.network.RequestChannel$=false#log4j.logger.kafka.network.Processor=TRACE, requestAppender#log4j.logger.kafka.server.KafkaApis=TRACE, requestAppender#log4j.additivity.kafka.server.KafkaApis=falselog4j.logger.kafka.request.logger=WARN, requestAppenderlog4j.additivity.kafka.request.logger=falselog4j.logger.kafka.controller=TRACE, controllerAppenderlog4j.additivity.kafka.controller=falselog4j.logger.kafka.log.LogCleaner=INFO, cleanerAppenderlog4j.additivity.kafka.log.LogCleaner=falselog4j.logger.kafka.log.Cleaner=INFO, cleanerAppenderlog4j.additivity.kafka.log.Cleaner=falselog4j.logger.state.change.logger=TRACE, stateChangeAppenderlog4j.additivity.state.change.logger=false#---------------------------------------#

Java 基於log4j的日誌工具類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.