JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

GitHub精选 | 轻量级Android和Java日志库

wys521 2025-06-10 02:31:32 精选教程 3 ℃ 0 评论

《GitHub精选》是我们分享Github中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个轻量级的Android和Java日志库——xLog。



xLog是一个轻量、美观大方、可扩展的 Android 和 Java 日志库,可同时打印日志在如 Logcat、Console 和文件中。

特点:

  • 全局配置(TAG,各种格式化器...)或基于单条日志的配置
  • 支持打印任意对象以及可自定义的对象格式化器
  • 支持打印无限长的日志(没有 4K 字符的限制)
  • XML 和 JSON 格式化输出

使用方法:

1、添加依赖

implementation 'com.elvishew:xlog:1.10.1'

2、初始化配置

当初始化时,可以用最简单的方式

XLog.init(LogLevel.ALL);

也可以用高级的方式

LogConfiguration config = new LogConfiguration.Builder()

.logLevel(BuildConfig.DEBUG ? LogLevel.ALL // 指定日志级别,低于该级别的日志将不会被打印,默认为 LogLevel.ALL

: LogLevel.NONE)

.tag("MY_TAG") // 指定 TAG,默认为 "X-LOG"

.enableThreadInfo() // 允许打印线程信息,默认禁止

.enableStackTrace(2) // 允许打印深度为 2 的调用栈信息,默认禁止

.enableBorder() // 允许打印日志边框,默认禁止

.jsonFormatter(new MyJsonFormatter()) // 指定 JSON 格式化器,默认为 DefaultJsonFormatter

.xmlFormatter(new MyXmlFormatter()) // 指定 XML 格式化器,默认为 DefaultXmlFormatter

.throwableFormatter(new MyThrowableFormatter()) // 指定可抛出异常格式化器,默认为 DefaultThrowableFormatter

.threadFormatter(new MyThreadFormatter()) // 指定线程信息格式化器,默认为 DefaultThreadFormatter

.stackTraceFormatter(new MyStackTraceFormatter()) // 指定调用栈信息格式化器,默认为 DefaultStackTraceFormatter

.borderFormatter(new MyBoardFormatter()) // 指定边框格式化器,默认为 DefaultBorderFormatter

.addObjectFormatter(AnyClass.class, // 为指定类型添加对象格式化器

new AnyClassObjectFormatter()) // 默认使用 Object.toString()

.addInterceptor(new BlacklistTagsFilterInterceptor( // 添加黑名单 TAG 过滤器

"blacklist1", "blacklist2", "blacklist3"))

.addInterceptor(new MyInterceptor()) // 添加一个日志拦截器

.build();

Printer androidPrinter = new AndroidPrinter(true); // 通过 android.util.Log 打印日志的打印器

Printer consolePrinter = new ConsolePrinter(); // 通过 System.out 打印日志到控制台的打印器

Printer filePrinter = new FilePrinter // 打印日志到文件的打印器

.Builder("<日志目录全路径>") // 指定保存日志文件的路径

.fileNameGenerator(new DateFileNameGenerator()) // 指定日志文件名生成器,默认为 ChangelessFileNameGenerator("log")

.backupStrategy(new NeverBackupStrategy()) // 指定日志文件备份策略,默认为 FileSizeBackupStrategy(1024 * 1024)

.cleanStrategy(new FileLastModifiedCleanStrategy(MAX_TIME)) // 指定日志文件清除策略,默认为 NeverCleanStrategy()

.flattener(new MyFlattener()) // 指定日志平铺器,默认为 DefaultFlattener

.writer(new MyWriter()) // 指定日志写入器,默认为 SimpleWriter

.build();

XLog.init( // 初始化 XLog

config, // 指定日志配置,如果不指定,会默认使用 new LogConfiguration.Builder().build()

androidPrinter, // 添加任意多的打印器。如果没有添加任何打印器,会默认使用 AndroidPrinter(Android)/ConsolePrinter(java)

consolePrinter,

filePrinter);

3、打印日志

  • 打印简单消息
XLog.d("Hello World");
  • 打印带throwable 的消息,通常用于有异常被抛出时
XLog.e(message, throwable);
  • 支持格式化字符串
XLog.d("你好%s,我今年 %d 岁", "Elvis", 20);
  • 未格式化的 JSON 和 XML 字符串会被自动格式化
XLog.json(JSON_CONTENT);

XLog.xml(XML_CONTENT);
  • 支持所有的 Collection 和 Map 类型的数据
XLog.d(array);

XLog.d(list);

XLog.d(map);
  • 支持直接打印Intent和Bundle对象
XLog.d(intent);

XLog.d(bundle);
  • 保存日志到文件

要保存日志到文件,你需要创建一个 FilePrinter

Printer filePrinter = new FilePrinter // 打印日志到文件的打印器

.Builder("<日志目录全路径>") // 指定保存日志文件的路径

.fileNameGenerator(new DateFileNameGenerator()) // 指定日志文件名生成器,默认为 ChangelessFileNameGenerator("log")

.backupStrategy(new NeverBackupStrategy()) // 指定日志文件备份策略,默认为 FileSizeBackupStrategy(1024 * 1024)

.cleanStrategy(new FileLastModifiedCleanStrategy(MAX_TIME)) // 指定日志文件清除策略,默认为 NeverCleanStrategy()

.flattener(new MyFlattener()) // 指定日志平铺器,默认为 DefaultFlattener

.build();

并在初始化时添加它

XLog.init(config, filePrinter);


架构:

另外,xLog还支持保存第三方库打印的日志到文件、自定义日志文件名、拦截和过虑日志、自定义日志格式和格式化任意类型的对象等功能。



GitHub: https://github.com/elvishew/xLog

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表