本文共 4875 字,大约阅读时间需要 16 分钟。
Logback-Android, 这个库,可以将Log写入到File,写入到数据库,写入到Email,写入到网络
implementation 'org.slf4j:slf4j-api:1.7.29' implementation 'com.github.tony19:logback-android:2.0.0' implementation rootProject.ext.dependencies["timber"]//Timber 写在了配置文件: "timber" : "com.jakewharton.timber:timber:4.7.1",
存储权限
%-5relative [%thread] - %msg%n true true ${LOG_DIR}/base.log %date [%thread] %-5level %logger{36} [%file:%line] - %msg%n ${LOG_DIR}/app.${today}.log true %date %-5relative [%thread] %-5level - %msg%n ${LOG_DIR}/app.%d{yyyy-MM-dd}.log 7 10MB
在Android 11平台上,存储是强制分区存储的,所以存储地址需要变更为内部存储地址。
public class FileLoggingTree extends Timber.DebugTree { private static Logger mLogger = LoggerFactory.getLogger(FileLoggingTree.class); @Override protected void log(int priority, String tag, @NotNull String message, Throwable t) { if (priority == Log.VERBOSE) { return; } if (!TextUtils.isEmpty(message)) { String logMessage = tag + ": " + message; switch (priority) { case Log.DEBUG: mLogger.debug(logMessage); break; case Log.INFO: mLogger.info(logMessage); break; case Log.WARN: mLogger.warn(logMessage); break; case Log.ERROR: mLogger.error(logMessage); break; default: break; } } else { if (t != null) { switch (priority) { case Log.DEBUG: mLogger.debug(tag, t); break; case Log.INFO: mLogger.info(tag, t); break; case Log.WARN: mLogger.warn(tag, t); break; case Log.ERROR: mLogger.error(tag, t); break; default: break; } } } }}
/** * ================================================ * 日志工具类 * ================================================ */public class AppLogUtils { private static String mTag = "AppLogUtils ==="; private static boolean isLog = true; private AppLogUtils() { throw new IllegalStateException("you can't instantiate me!"); } public static boolean isLog() { return isLog; } public static void setLog(boolean isLog) { AppLogUtils.isLog = isLog; } public static void setTag(String tag) { AppLogUtils.mTag = tag; Timber.plant(new FileLoggingTree()); } public static void input(String msg) { if (!isLog) { return; } Timber.tag(mTag).i(msg); } public static void input(String tag, String msg) { if (!isLog || TextUtils.isEmpty(msg)) { return; } Timber.tag(mTag + tag).i(msg); } public static void warn(String tag, String msg) { if (!isLog || TextUtils.isEmpty(msg)) { return; } Timber.tag(mTag + tag).w(msg); } public static void error(String tag, String msg) { if (!isLog || TextUtils.isEmpty(msg)) { return; } Timber.tag(mTag + tag).e(msg); } public static void error(String tag, Exception e) { if (!isLog || e == null) { return; } Timber.tag(mTag + tag).e(e); } public static void debugInfo(String tag, String msg) { if (!isLog || TextUtils.isEmpty(msg)) { return; } Timber.tag(mTag + tag).d(msg); }}
Android–>Log系统,Logback的使用体验(slf4j):
转载地址:http://bovcz.baihongyu.com/