目录:
- 为什么要打印日志?
- XLog是什么
- XLog如何使用
一、为什么要打印日志?
日志是我们系统出现错误时,最快速有效的定位工具,没有日志给出的错误信息,遇到报错你就会一脸懵逼;而且日志还可以用来记录业务信息,比如记录用户执行的每个操作,不仅可以用于分析改进系统,同时在遇到非法操作时,也能很快找到凶手。
在学习日志记录之前,很多同学应该是通过 Log.d 或者System.out.println 输出信息来调试程序的,简单方便。
但是,System.out.println 存在很严重的问题!首先,System.out.println 是一个同步方法,每次调用都会导致 I/O 操作,比较耗时,频繁使用甚至会严重影响应用程序的性能,所以不建议在生产环境使用。此外,它只能输出简单的信息到标准控制台,无法灵活设置日志级别、格式、输出位置等。
所以我们一般会选择专业的日志框架或工具库,比如 XLog、Timber和Logger,这里我们主要讲解XLog,因为它用起来很快速很便捷,比如日志记录到文件,只需要配置参数,就可以使用这个功能,非常的人性化。
二、XLog是什么
框架链接:https://github.com/elvishew/xLog
轻量、美观强大、可扩展的 Android 和 Java 日志库,可同时将日志打印在如 Logcat、Console 和文件中。如果你愿意,你可以将日志打印到任何地方。
可以看到XLog能解决的问题:
- 将内容记录到文件中。
- 内容方面也会帮助我们进行优化,比如对配置进行优化,就可以自动加上时间。
- 也可以自定义文件的存活时间,超过了则自动删除。
- 还可以限制每个文件的大小。
三、XLog如何使用
1、依赖
implementation 'com.elvishew:xlog:1.11.1'
2、配置和初始化
xLog 具有高度可扩展性,几乎任何一个组件都是可配置的。
比如我们想配置,log日志记录到哪个目录;每个文件最大容量是多少;可以自定义存活时间等等。在Application中进行初始化。
val config = LogConfiguration.Builder()
.logLevel(LogLevel.ALL)// 指定日志级别,低于该级别的日志将不会被打印,默认为 LogLevel.ALL
.tag("Snow cone")// 指定 TAG
.xmlFormatter(DefaultXmlFormatter())// 指定 XML 格式化器,默认为 DefaultXmlFormatter
.stackTraceFormatter(DefaultStackTraceFormatter())// 指定调用栈信息格式化器
.build();
val androidPrinter =
AndroidPrinter(true)
val logFolder =
Environment.getExternalStorageDirectory().path.toString() + "/android_log"
val filePrinter = FilePrinter.Builder(logFolder)
.fileNameGenerator(DateFileNameGenerator())//日志文件名格式
.backupStrategy(FileSizeBackupStrategy((50 * 1024 * 1024).toLong()))//单个日志文件的大小默认:FileSizeBackupStrategy(1024 * 1024) 50MB
.cleanStrategy(FileLastModifiedCleanStrategy(7L * 24L * 60L * 60L * 1000L))//日志文件存活时间,单位毫秒 7天
.flattener(ClassicFlattener())//配置写入文件日志格式:年月日时分秒
.writer(SimpleWriter())//配置了writer才支持日志写文件
.build()
XLog.init(config, androidPrinter, filePrinter)
3、在Activity中进行使用
XLog.d("测试 xlog 日志框架1")
4、日志文件内容如下:
(1)文件路径
(2)点击文件
(3)文件内容
好了,这篇文章就介绍到这里~,我是前期后期,如果你也有日志相关的经验分享,也可以在评论区讨论哦,我们下一篇文章再见。