在Android中使用logback-android日志框架配置 slf4j + logback
16lz
2021-01-26
为什么使用 slf4j + logback
logbak定位于log4j的替代者,logback同样支持slf4j,方便被替换。在Android平台上,我在使用log4中遇到tag混乱的问题。相比log4j,logback-android的jar更小巧。
下载jar包
前往 https://github.com/tony19/logback-android ,下载获得 logback-android-1.1.1-4.jar slf4j-api-1.7.6.jar
导入到工程中
将上面的两个jar文件放入项目中的libs中,并添加项目引用。
配置日志文件的位置
注意下面代码中的 configureLogbackDirectly 方法,它接收一个文件路径参数,指示存放日志文件的目录,还有一个是生成的日志文件的前缀。我下面配置了“每天生成一个新的日志文件”。
package vir56k.logdemo;import android.os.Environment;import org.slf4j.LoggerFactory;import java.io.File;import ch.qos.logback.classic.Level;import ch.qos.logback.classic.Logger;import ch.qos.logback.classic.LoggerContext;import ch.qos.logback.classic.android.LogcatAppender;import ch.qos.logback.classic.encoder.PatternLayoutEncoder;import ch.qos.logback.classic.spi.ILoggingEvent;import ch.qos.logback.core.rolling.RollingFileAppender;import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;/** * Created by zhangyunfei on 15/9/21. */public class LogConfigurator { public static void confifure() { final String LOG_DIR = Environment.getExternalStorageDirectory() + File.separator + "logback"; final String PREFIX = "log"; configureLogbackDirectly(LOG_DIR, PREFIX); } private static void configureLogbackDirectly(String log_dir, String filePrefix) { // reset the default context (which may already have been initialized) // since we want to reconfigure it LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); context.reset(); RollingFileAppender rollingFileAppender = new RollingFileAppender(); rollingFileAppender.setAppend(true); rollingFileAppender.setContext(context); // OPTIONAL: Set an active log file (separate from the rollover files). // If rollingPolicy.fileNamePattern already set, you don't need this. //rollingFileAppender.setFile(LOG_DIR + "/log.txt"); TimeBasedRollingPolicy rollingPolicy = new TimeBasedRollingPolicy(); rollingPolicy.setFileNamePattern(log_dir + "/" + filePrefix + "_%d{yyyyMMdd}.txt"); rollingPolicy.setMaxHistory(7); rollingPolicy.setParent(rollingFileAppender); // parent and context required! rollingPolicy.setContext(context); rollingPolicy.start(); rollingFileAppender.setRollingPolicy(rollingPolicy); PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setPattern("%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"); encoder.setContext(context); encoder.start(); rollingFileAppender.setEncoder(encoder); rollingFileAppender.start(); LogcatAppender logcatAppender = new LogcatAppender(); logcatAppender.setContext(context); logcatAppender.setEncoder(encoder); logcatAppender.setName("logcat1"); logcatAppender.start(); // add the newly created appenders to the root logger; // qualify Logger to disambiguate from org.slf4j.Logger ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); root.setLevel(Level.TRACE); root.addAppender(rollingFileAppender); root.addAppender(logcatAppender); // print any status messages (warnings, etc) encountered in logback config //StatusPrinter.print(context); }}
使用方法
先声明和创建实例
private static final Logger logger = LoggerFactory.getLogger(MainActivity.class);
写入日志
logger.debug("debug Some log message. Details: {}", "debug 输出");logger.info("info Some log message. Details: {}", "debug 输出");logger.error("error Some log message. Details: {}", "debug 输出");
代码混淆注意
请在你的混淆设置里加入下面这些:
-keep class ch.qos.** { *; } -keep class org.slf4j.** { *; } -keepattributes *Annotation*
示例代码下载地址
https://github.com/vir56k/demo/tree/master/logBackDemo
参考资料:
https://github.com/tony19/logback-android
https://github.com/tony19/logback-android/wiki/Appender-Notes
http://logback.qos.ch/documentation.html
http://blog.csdn.net/zgmzyr/article/details/8267072
更多相关文章
- android studio一键生成快速开发实现语言国际化
- Android(安卓)Studio 从2.3.1升级到3.4.1遇到的问题
- android 源码编译导入library project
- APK的Platform签名的权限
- Android(安卓)build过程中already defined by packages/apps 的
- Mac android studio升级时提示 :Connection failed. Please chec
- Android自定义按钮样式
- Android存储字符串数据到txt文件
- [置顶] cocos2d-x 2.x版本之win32 window移植android 环境搭配