Android

Logger封装(2018.10.15)

2018-10-15  本文已影响47人  瑟闻风倾

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

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

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

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+"");
        }
    }

}

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);

    }

}

上一篇下一篇

猜你喜欢

热点阅读