Android开源日志框架xlog
版权声明:本文为xing_star原创文章,转载请注明出处!
本文同步自
xlog的优点
在开发过程中,避免不了要使用日志组件,用来记录程序执行过程中一些关键节点的日志,出了问题,我们可以根据日志信息,快速定位问题。
对了本文所说的xlog不是指的微信mars下的xlog日志。本文中的xlog是国人开发的一个开源日志框架,github上的地址是 https://github.com/elvishew/xlog
它的优点包括,用法简单,日志格式美观,日志输出可以显示所在类的行数,可以扩展android和java的日志库,可以在多个通道打印日志,如console,file,logcat等等。除了这些外,他支持打印各种对象或是自定义对象。包括数组,xml,json数据。日志信息包含线程信息,调用栈信息(堆栈信息,方法名,文件名,行号等等)。还支持保存日志文件,日志备份等。对开发者而言相当友好,用法也很简单。
xlog的用法
先添加依赖
implementation 'com.elvishew:xlog:1.6.1'
接着在application中初始化
xlog.init(buildconfig.debug ? loglevel.all : loglevel.none);
这是最简单的配置,如果想要添加一些自定义的操作,比如在release下采集日志到文件中,在debug下都显示日志可以这样配置
logconfiguration config = new logconfiguration.builder() .loglevel(buildconfig.debug ? loglevel.all // specify log level, logs below this level won't be printed, default: loglevel.all : loglevel.all) .tag("my_tag") // specify tag, default: "x-log" .t() // enable thread info, disabled by default .st(2) // enable stack trace info with depth 2, disabled by default .b() // enable border, disabled by default // .jsonformatter(new myjsonformatter()) // default: defaultjsonformatter // .xmlformatter(new myxmlformatter()) // default: defaultxmlformatter // .throwableformatter(new mythrowableformatter()) // default: defaultthrowableformatter // .threadformatter(new mythreadformatter()) // default: defaultthreadformatter // .stacktraceformatter(new mystacktraceformatter()) // default: defaultstacktraceformatter // .borderformatter(new myboardformatter()) // default: defaultborderformatter // .addobjectformatter(anyclass.class, // add formatter for specific class of object // new anyclassobjectformatter()) // use object.tostring() by default // .addinterceptor(new blacklisttagsfilterinterceptor( // add blacklist tags filter // "blacklist1", "blacklist2", "blacklist3")) // .addinterceptor(new myinterceptor()) // add a log interceptor .build(); string xlogpath = getfilesdir().getabsolutepath(); printer androidprinter = new androidprinter(); // printer that print the log using android.util.log // printer consoleprinter = new consoleprinter(); // printer that print the log to console using system.out printer fileprinter = new fileprinter // printer that print the log to the file system .builder(xlogpath) // specify the path to save log file // .filenamegenerator(new changelessfilenamegenerator("log")) // default: changelessfilenamegenerator("log") .backupstrategy(new neverbackupstrategy()) // default: filesizebackupstrategy(1024 * 1024) // .cleanstrategy(new filelastmodifiedcleanstrategy(max_time)) // default: nevercleanstrategy() // .flattener(new myflattener()) // default: defaultflattener .build(); if (buildconfig.debug) { xlog.init( // initialize xlog config, // specify the log configuration, if not specified, will use new logconfiguration.builder().build() androidprinter, // specify printers, if no printer is specified, androidprinter(for android)/consoleprinter(for java) will be used. // consoleprinter, fileprinter); } else { xlog.init( // initialize xlog config, // specify the log configuration, if not specified, will use new logconfiguration.builder().build() // androidprinter, // specify printers, if no printer is specified, androidprinter(for android)/consoleprinter(for java) will be used. // consoleprinter, fileprinter); }
预览效果
集成成功后,我们在项目中运行下,看看效果如何,如下图所示。分别是logcat下的格式化的日志(显示日志堆栈信息,线程名称,类名,方法名,行号等),日志文件中的日志信息
使用xlog后,日志文件可以收集到所有的日志信息,方便了定位问题,格式化的日志,线程名,堆栈信息,对开发者也是相当友好的。
在最近的一个app中,添加了一个日志上传功能,就是将xlog收集到的日志文件,上传给开发者,这个功能对于开发者定位一些用户反馈的问题很有用处,下一篇我将分享下是如何实现日志上传功能的。
参考资料
如果想深入了解源码设计的话,可以看这篇文章, android开源日志框架解析
xlog项目地址 https://github.com/elvishew/xlog
上一篇: Oracle 11g 总结篇2
下一篇: Vue.js前端MVVM框架实战篇
推荐阅读
-
Android开源日志框架xlog
-
Exceptionless - .Net Core开源日志框架
-
android日志框架Logger的详细使用(目前最新版2.1.1)
-
一款好用的android图片缩放查看开源框架photoview的使用。
-
开源应用框架BitAdminCore:更新日志20180903
-
Android开源:数据库ORM框架GreenDao封装工具类使用
-
Android中使用开源框架eventbus3.0实现fragment之间的通信交互
-
Android中使用开源框架eventbus3.0实现fragment之间的通信交互
-
Android中使用开源框架Citypickerview实现省市区三级联动选择
-
Android中使用开源框架Citypickerview实现省市区三级联动选择