Android开源⽇志框架xlog
版权声明:本⽂为xing_star原创⽂章,转载请注明出处!
xlog的优点
在开发过程中,避免不了要使⽤⽇志组件,⽤来记录程序执⾏过程中⼀些关键节点的⽇志,出了问题,我们可以根据⽇志信息,快速定位问题。
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())                    // String() 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下的格式化的⽇志(显⽰⽇志堆栈信息,线程名称,类名,⽅法名,⾏号等),⽇志⽂件中的⽇志信息浏览器json格式化
使⽤xlog后,⽇志⽂件可以收集到所有的⽇志信息,⽅便了定位问题,格式化的⽇志,线程名,堆栈信息,对开发者也是相当友好的。
在最近的⼀个app中,添加了⼀个⽇志上传功能,就是将xlog收集到的⽇志⽂件,上传给开发者,这个功能对于开发者定位⼀些⽤户反馈的问题很有⽤处,下⼀篇我将分享下是如何实现⽇志上传功能的。
参考资料

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。