美文网首页
简单好用的日志封装

简单好用的日志封装

作者: 知名评客 | 来源:发表于2020-04-27 10:21 被阅读0次

    Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,Log4j有一个规则:只输出级别不低于设定级别的日志信息,假设Loggers级别设定为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG则不会输出。

    上代码,简单好用!

    log4j.properties文件配置

    base.logs.dir=D:/logs/test

    log4j.rootLogger=DEBUG, stdout, logfile

    log4j.category.org.springframework=ERROR

    #log4j.category.org.apache=INFO

    #log4j.category.org.apache=DEBUG

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender

    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

    log4j.appender.logfile=org.apache.log4j.RollingFileAppender

    log4j.appender.logfile.File=${base.logs.dir}/WEB-INF/log/myweb.log

    log4j.appender.logfile.MaxFileSize=512KB

    log4j.appender.logfile.MaxBackupIndex=5

    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

    log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

    代码!

    package com.wonders.superbatch.utils;

    import org.apache.log4j.Logger;

    import java.io.PrintWriter;

    import java.io.Serializable;

    import java.io.StringWriter;

    /**

    * @Author: zwj

    * @Date: 2020/4/21 16:22

    * @Version 1.0

    *

    * 日志记录类

    */

    public class LogUtilsimplements Serializable{

        private static Loggerlog = Logger.getLogger(LogUtils.class);

    /**

    * 是否开启Debug

    */

        public static boolean isDebug =log.isDebugEnabled();

    public static boolean isinfo =log.isInfoEnabled();

    private static Stringdebug ="debug";

    private static Stringinfo ="info";

    private static Stringerror ="error";

    private static Stringwarn ="warn";

    /*** 获取输出信息的代码的位置 ***/

      private static Stringlocation ="";

    public LogUtils(Class<?extends Object> clazz) {

    }

        /**

    * 获取行号和传入类的信息

    */

      private static StackTraceElement[] stacks = Thread.currentThread().getStackTrace();

    /**

    * Debug 输出

            * @param

            * @param

            */

            public static void debug(Object object){

                if(!isDebug)

                    return ;

    try {

                    String location =getLocation(object,debug);

    }catch (Exception e){

                    // TODO: handle exception

                    e.printStackTrace();

    }

    }

            /**

    * warn 输出

    */

            public static void warn(Object object){

                try {

                    String location =getLocation(object,warn);

    }catch (Exception e){

                    // TODO: handle exception

                    e.printStackTrace();

    }

    }

            /**

    * 异常填充值输出

    */

            public static void  info(Object object){

                if(!isinfo)

                    return ;

    try {

                    String location =getLocation(object,info);

    }catch (Exception e){

                    // TODO: handle exception

                    e.printStackTrace();

    }

    }

        /**

    * 异常填充值输出

    */

        public static void  error(Object object){

            try {

                String location =getLocation(object,error);

    }catch (Exception e){

                // TODO: handle exception

                e.printStackTrace();

    }

    }

            /**

    * 异常填充输出

    */

            public static void fmtError(Object object) {

    }

        public  static  String getLocation(Object object,String type){

            location =stacks[2].getClassName() +"." +stacks[2].getMethodName()

                    +"  [  " +stacks[2].getLineNumber() +"  ]  ";

    /*** 是否是异常  ***/

            if (objectinstanceof Exception) {

                Exception e =(Exception) object;

    StringWriter sw =new StringWriter();

    e.printStackTrace(new PrintWriter(sw,true));

    String str = sw.toString();

    getType(location,type,str);

    } else {

                getType(location,type,object.toString());

    }

          return    location;

    }

          public  static void  getType(String location,String type,String string){

                switch (type){

                    case "debug":

                        log.debug(location+"[  "+string+"  ]");

                        break;

                    case "info":

                        log.info(location+"[  "+string+"  ]");

                        break;

                    case "warn":

                        log.warn(location+"[  "+string+"  ]");

                        break;

                    case "error":

                        log.error(location+"[  "+string+"  ]");

                        break;

                }

    }

    }

    相关文章

      网友评论

          本文标题:简单好用的日志封装

          本文链接:https://www.haomeiwen.com/subject/obfaihtx.html