首页 > 系统 > Android > 正文

Android学习之工具类三:日志管理工具类

2019-11-09 18:03:50
字体:
来源:转载
供稿:网友

​权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

import android.util.Log;import java.io.File;import java.util.logging.FileHandler;import java.util.logging.Level;import java.util.logging.Logger;import java.util.logging.SimpleFormatter;/** * 日志管理工具类 * * @author linzhiyong * @time 2016-09-27 16:19:57 * @email wflinzhiyong@163.com * @desc */public class LoggerUtil {    PRivate static final String TAG = LoggerUtil.class.getName();​    /** log文件夹名称 */    private static final String LOG = "log";    /** log文件名称 */    private static final String LOG_NAME = "log.log";    /** debug模式下控制台打印日志 */    public boolean debug = false;    /** the logger */    private static Logger logger = null;    /** the log file */    private static File file = null;    /** the LoggerTool */    private static LoggerUtil instance = null;    private LoggerUtil() {    }    /**     * 获取实例     *     * @return     */    public static LoggerUtil getInstance() {        if (instance == null) {            instance = new LoggerUtil();        }        return instance;    }    /**     * 初始化Log, 生成log文件     * 如果使用Log保存信息, 必须初始化     *     * @param logPath     * @param _debug     */    public void init(String logPath, boolean _debug) {        logger = Logger.getLogger(LOG_NAME);        logger.setLevel(Level.ALL);        file = new File(logPath + File.separator + LOG_NAME);        if (!file.exists()) {            file.getParentFile().mkdirs();        }        // 设置不使用parent的消息处理handler, 主要用于屏蔽向控制台输出日志        this.debug = _debug;        if (debug) {            logger.setUseParentHandlers(true);        } else {            logger.setUseParentHandlers(false);        }    }    /**     * 记录错误日志     *     * @param className     * @param msg     */    public static void error(String className, String msg) {        log(Level.SEVERE, className, msg, null);    }    /**     * 记录错误日志     *     * @param className     * @param msg     * @param e     */    public static void error(String className, String msg, Throwable e) {        log(Level.SEVERE, className, msg, e);    }    /**     * 记录警告日志     *     * @param className     * @param msg     */    public static void warning(String className, String msg) {        log(Level.WARNING, className, msg, null);    }    /**     * 记录警告日志     *     * @param className     * @param msg     */    public static void warning(String className, String msg, Throwable e) {        log(Level.WARNING, className, msg, e);    }    /**     * 记录配置日志     *     * @param className     * @param msg     */    public static void config(String className, String msg) {        log(Level.CONFIG, className, msg, null);    }    /**     * 记录配置日志     *     * @param className     * @param msg     */    public static void config(String className, String msg, Throwable e) {        log(Level.CONFIG, className, msg, e);    }    /**     * 记录日志     *     * @param level     * @param className     * @param msg     */    public static void log(Level level, String className, String msg, Throwable tr) {        if (logger == null) {            Log.e(TAG, "请调用init方法初始化!");            return;        }        if (level == null) {            level = Level.ALL;        }        msg += Log.getStackTraceString(tr);        try {            FileHandler fh = new FileHandler(file.toString(), true);            fh.setFormatter(new SimpleFormatter());            logger.addHandler(fh);            logger.log(level, className + ": " + msg + "/n");            fh.close();            logger.removeHandler(fh);        } catch (Exception e) {            Log.e(className + "", msg + "", e);        }    }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表