美文网首页Android
Logger封装(2018.10.15)

Logger封装(2018.10.15)

作者: 瑟闻风倾 | 来源:发表于2018-10-15 16:51 被阅读47次

    1. Log框架Logger的基本使用:

    「Logger」(https://github.com/orhanobut/logger)

    2.Log框架Logger的封装使用:

    • LoggerUtil类:
    package comi.example.liy.firstbasicproject.tool;
    
    import com.orhanobut.logger.AndroidLogAdapter;
    import com.orhanobut.logger.Logger;
    
    /**
     * Created by liy on 2018-07-19.
     * 日志打印工具类:对Logger再进行一层封装
     * Android的Log等级通常有五类,按照日志级别由低到高分别是Verbose、Debug、Info、Warning、Error,其对应的log定义在system层。
     * 注:Info、Warnning、Error等级的Log在普通调试中不随意滥用。
     */
    
    public class LoggerUtil {
        private static LoggerUtil loggerUtil;
    
        private LoggerUtil(){
            Logger.addLogAdapter(new AndroidLogAdapter());
    
            //在初始化过程中可以使用默认值配置初始化也可以自定义
            /*FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
                    .showThreadInfo(true)  //(可选)是否显示线程信息,默认为true
                    .methodCount(2)         //(可选)要显示的方法行数,默认2行
                    .methodOffset(5)        //(可选)隐藏内部方法调用到偏移量,默认5
                    .tag("PRETTY_LOGGER")   //(可选)每个日志的全局标记,默认PRETTY_LOGGER
                    .build();
            Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));///根据上面的格式设置logger相应的适配器*/
    
        }
    
        public static LoggerUtil getLoggerUtil(){
            if(loggerUtil == null){
                loggerUtil = new LoggerUtil();
            }
            return loggerUtil;
        }
    
    
        /**
         * 是否开启debug
         */
        private static boolean isDebug = true;
    
        /**
         *Verbose就是冗长啰嗦的:通常表达开发调试过程中的一些详细信息,不过滤地输出所有调试信息。
         */
        public static void v(String tag,String msg){
            if(isDebug){
                Logger.t(tag).v(msg+"");
            }
        }
    
        /**
         * Debug来表达调试信息:用Log.d()能输出Debug、Info、Warning、Error级别的Log信息。
         */
    
        public static void d(String tag,String msg){
            if(isDebug){
                Logger.t(tag).d( msg+"");
            }
        }
    
        public static void d(String tag, Object... args) {
            if(isDebug){
                Logger.t(tag).d(args);
            }
        }
    
        public static void d(String tag,Object object) {
            if(isDebug){
                Logger.t(tag).d(object);
            }
        }
    
        /**
         * Info来表达一些信息:用Log.i()能输出Info、Warning、Error级别的Log信息。
         */
        public static void i(String tag,String msg){
            if(isDebug){
                Logger.t(tag).i( msg+"");
            }
        }
    
        /**
         * Warning表示警告:但不一定会马上出现错误,开发时有时用来表示特别注意的地方。用Log.w()能输出Warning、Error级别的Log信息。
         */
        public static void w(String tag,String msg){
            if(isDebug){
                Logger.t(tag).w(msg+"");
            }
        }
    
        /**
         * Error表示出现错误:是最需要关注解决的。用Log.e()输出,能输出Error级别的Log信息。
         */
        public static void e(String tag,String msg){
            if(isDebug){
                Logger.t(tag).e(msg+"");
            }
        }
    
        public static void json(String tag,String msg){
            if(isDebug){
                Logger.t(tag).json(msg+"");
            }
        }
    
        public static void xml(String tag,String msg){
            if(isDebug){
                Logger.t(tag).xml(msg+"");
            }
        }
    
    }
    
    
    • LoggerActivity中调用:
    package comi.example.liy.firstbasicproject.ui.activity;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    import comi.example.liy.firstbasicproject.R;
    import comi.example.liy.firstbasicproject.tool.LoggerUtil;
    import comi.example.liy.firstbasicproject.ui.interfaces.BasicActivity;
    
    /**
     * Created by liy on 2018-07-11.
     * 1、使用Logger框架
     * 2、支持格式:
     *
     * 注:打印集合的时候,特别是数组时,前面不要添加其他字符,如:Logger.d("数组集合"+strs);这样会把整体当做一个参数,导致判断错误,不能正常输出数组类型。
     *     其次打印集合时,使用DEBUG等级。
     */
    
    public class LoggerActivity extends Activity implements BasicActivity {
        private static final String TAG = LoggerActivity.class.getSimpleName();
    
        private Button btn1;
        private Button btn2;
        private Button btn3;
        private Button btn4;
        private Button btn5;
    
        private LoggerUtil loggerUtil;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_logger);
            initViews();
            initData();
            initListeners();
        }
    
        @Override
        public void initViews() {
            btn1 = (Button)findViewById(R.id.activity_logger_logger1);
            btn2 = (Button)findViewById(R.id.activity_logger_logger2);
            btn3 = (Button)findViewById(R.id.activity_logger_logger3);
            btn4 = (Button)findViewById(R.id.activity_logger_logger4);
            btn5 = (Button)findViewById(R.id.activity_logger_logger5);
    
    
        }
    
        @Override
        public void initData() {
            loggerUtil = LoggerUtil.getLoggerUtil();
            loggerUtil.d(TAG,"初始化Logger");
    
        }
    
        @Override
        public void initListeners() {
            btn1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    testNormalLogger();
                }
            });
    
            btn2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    testFormatLogger();
                }
            });
    
            btn3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    testCollectionLogger();
                }
            });
    
            btn4.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    testJsonLogger();
                }
            });
    
            btn5.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    testXmlLogger();
                }
            });
        }
    
        public void testNormalLogger(){
            loggerUtil.d(TAG,"DEBUG日志");
            loggerUtil.i(TAG,"INFO日志");
            loggerUtil.e(TAG,"ERROR日志");
        }
    
        public void testFormatLogger(){
            loggerUtil.d("hello %s, luck number is %d", "world", 5);
        }
    
        public void testCollectionLogger(){
            /**
             * List
             */
            List list = new ArrayList();
            list.add("hello");
            list.add("world");
            loggerUtil.d(TAG,list);
    
            /**
             * Map
             */
            Map map = new HashMap();
            map.put("map1","hello");
            map.put("map2","world");
            loggerUtil.d(TAG,map);
    
            /**
             * Set
             */
            Set set = new HashSet();
            set.add("hello");
            set.add("world");
            loggerUtil.d(TAG,set);
    
            /**
             * Array
             */
            String[] strs = {"hello", "world"};
            //loggerUtil.d(TAG,strs);
    
        }
    
        public void testJsonLogger(){
            String jsonDate = "{\"id\":859,\"channelnumber\":681,\"bilingual\":0,\"name\":\"beIN Sports 2 English 600K H265\",\n" +
                    " \"language\":\"EN\",\n" +
                    " \"videotype\":\"MPEG2\",\"audiotype\":\"MPEP1\",\"callsign\":\"beIN Sports 2 English 600K H265\",\"country\":\"cn\"};";
    
            loggerUtil.json(TAG,jsonDate);
    
    
        }
    
        public void testXmlLogger(){
            String xmlDate = "<province id=\"01\" name=\"北京\">  \n" +
                    "    <city id=\"0101\" name=\"北京\">  \n" +
                    "      <county id=\"010101\" name=\"北京\" weatherCode=\"101010100\"/>  \n" +
                    "      <county id=\"010102\" name=\"海淀\" weatherCode=\"101010200\"/>  \n" +
                    "      <county id=\"010103\" name=\"朝阳\" weatherCode=\"101010300\"/>  \n" +
                    "      <county id=\"010110\" name=\"石景山\" weatherCode=\"101011000\"/>  \n" +
                    "    </city>  \n" +
                    "  </province>  ";
            loggerUtil.xml(TAG,xmlDate);
    
        }
    
    }
    
    

    相关文章

      网友评论

        本文标题:Logger封装(2018.10.15)

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