android 磁盘日志记录,GitHub - xflyandroid/XLog: 一个简易的日志打印框架(支持打印策略自定义,默认提供2种策略:logcat打印和磁盘打印)...
XLog
一个简易的日志打印框架(支持打印策略自定义,默认提供2种策略:logcat打印和磁盘打印)
关于我
特征
支持自定义日志格式策略IFormatStrategy和打印策略ILogStrategy。
提供默认的两种日志打印方式:logcat(PrettyFormatStrategy)和磁盘打印(PrettyFormatStrategy)。
兼容android logcat,VERBOSE、DEBUG、INFO、WARN、ERROR和WTF全都有,一个都不能少
突破了logcat的4000字长度限制
支持打印xml,json,模版String等形式。
支持自定义日志文件存储形式(文件前缀、时间片存储等)。
在日志文件的顶部,XLog提供了很多有用的运行环境相关的信息,比如操作系统信息、设备信息和应用信息
支持时区设置。
支持日志文件信息可选择打印。
支持打印线程信息。
支持打印方法的数量。
支持捕捉并打印崩溃日志。
支持自定义崩溃日志处理。
支持第三方打印接口适配。
1、演示(请star支持)
1.1、logcat打印效果
打印debug信息和json日志
打印xml信息
打印出错信息
1.2、磁盘打印效果
打印debug信息和json日志
打印xml信息
打印出错信息
2、如何使用
目前支持主流开发工具AndroidStudio的使用,直接配置build.gradle,增加依赖即可.
2.1、Android Studio导入方法,添加Gradle依赖
1.先在项目根目录的 build.gradle 的 repositories 添加:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
2.然后在dependencies添加:
dependencies {
...
implementation 'com.github.xuexiangjys:XLog:1.1.5'
}
2.2、初始化
在Application中初始化
XLog.init(this);
2.3、构建Logger
1.构建一个Logger需要一个日志格式化策略IFormatStrategy和一个日志打印策略ILogStrategy。
其中,日志格式化策略IFormatStrategy应当持有日志打印策略ILogStrategy。而Logger持有日志格式化策略。
XLog负责全局日志Logger的调度。
Logger负责对外提供日志打印的能力(API)。
IFormatStrategy负责对日志内容进行格式化显示处理。
ILogStrategy负责进行具体的日志打印。
日志打印的流程如下:
XLog -> Logger -> IFormatStrategy -> ILogStrategy
下面是自定义构建一个磁盘打印Logger的方法:
ILogStrategy diskLogStrategy = DiskLogStrategy.newBuilder() //日志打印策略
.setLogDir("xlogDemo") //设置日志文件存储的根目录
.setLogPrefix("xlog") //设置日志文件名的前缀
.setLogSegment(LogSegment.FOUR_HOURS) //设置日志记录的时间片间隔
.setLogLevels(LogLevel.ERROR, LogLevel.DEBUG) //设置日志记录的等级
.build();
IFormatStrategy formatStrategy = DiskFormatStrategy.newBuilder() //日志格式策略
.setShowThreadInfo(false) //设置是否显示线程信息
.setTimeFormat(TimeUtils.LOG_LINE_TIME) //设置日志记录时间的时间格式
.setMethodCount(1) //设置打印显示的方法数
.setLogStrategy(diskLogStrategy) //设置日志打印策略
.build();
Logger.newBuilder("DiskLogger")
.setFormatStrategy(formatStrategy) //设置日志格式策略
.build();
2.简约的日志Logger构建方法。
为了方便Logger的构建,我提供了Logger静态生产工厂LoggerFactory。它包含了几种常用的Logger构造方法。
getLogger:获取自定义拼装的logger
getPrettyLogger: 获取漂亮的logger【打印方式是logcat】
getPrettyFormatStrategy: 获取漂亮的日志打印格式
getDiskLogStrategy: 获取磁盘打印的打印策略
getDiskFormatStrategy: 获取磁盘打印的格式策略
getSimpleDiskFormatStrategy: 获取简化的磁盘打印的格式策略
getDiskLogger: 获取磁盘打印的logger
getSimpleDiskLogger: 获取简化的磁盘打印的logger
下面是使用LoggerFactory构建的一个磁盘打印Logger:
DiskLogStrategy diskLogStrategy = LoggerFactory.getDiskLogStrategy(
"xlogDemo", "xlog", LogLevel.ERROR, LogLevel.DEBUG
);
LoggerFactory.getSimpleDiskLogger("DiskLogger", diskLogStrategy, 0);
如果需要构建一个日志目录为外部存储的绝对路径的磁盘打印Logger,可参见以下代码:
@Permission(PermissionConsts.STORAGE)
public void setDebugLogAbsolutePath() { //由于设置的是外部自定义的目录,在Android6.0上需要动态申请存储权限
LoggerFactory.getDiskLogger("DEBUG_LOGGER", Environment.getExternalStorageDirectory() + "/xlog/logs/debug_logs", true, "debug_log_", 0, LogLevel.DEBUG);
}
2.4、日志记录
UserInfo userInfo = new UserInfo().setLoginName("xuexiang").setPassword("12345678");
String json = new Gson().toJson(userInfo);
XLog.get().d(json); //打印debug日志
XLog.get().json(json); //打印json信息
XLog.get().xml(ResourceUtils.readStringFromAssert(this, "AndroidManifest.xml")); //打印xml
try {
throw new NullPointerException("出错啦!");
} catch (Exception e) {
XLog.get().e(e); //打印错误信息
}
2.5、第三方日志接口适配
我们在使用第三方库时,难免需要打印显示第三方库的日志到Logcat或者磁盘,那这个时候该怎么办呢?
这个时候就可以使用Logger的log方法进行接口适配。
//适配第三方日志打印接口
Logger.setLogger(new ILogger() {
@Override
public void log(int priority, String tag, String message, Throwable t) {
XLog.get().getLogger("LogUtils").log(LoggerFactory.logPriority2LogLevel(priority), tag, message, t);
}
});
log方法的接口如下:
/**
* 日志打印【提供具体日志打印的功能】
*
* @param level 日志打印等级
* @param tag 日志标签
* @param message 日志的信息
* @param throwable 错误信息
*/
void log(@LogLevel String level, String tag, String message, Throwable throwable);
2.6、程序崩溃Crash处理
1.目前提供两种默认的Crash处理:
ToastCrashListener:简单的toast提示 + 程序自动启动。
SendEmailCrashListener:发送崩溃日志邮件。
CrashHandler.getInstance().setOnCrashListener(new ToastCrashListener());
CrashHandler.getInstance().setOnCrashListener(new SendEmailCrashListener());
当然,你也可以实现你自己的崩溃Crash处理,只需要实现OnCrashListener接口即可。
2.设置崩溃日志的输出根目录为外部绝对路径【默认的存储目录地址:/storage/emulated/0/Android/data/com.xxx.xxx/cache/crash_log】
/**
* 设置崩溃日志输出根目录为绝对路径,路径为外部存储需要申请权限
*/
@Permission(PermissionConsts.STORAGE)
public void setAbsolutePath() {
CrashHandler.getInstance().setAbsolutePath(true).setCrashLogDir(Environment.getExternalStorageDirectory() + "/xlog/crash_logs/);
}
特别感谢
联系方式
android 磁盘日志记录,GitHub - xflyandroid/XLog: 一个简易的日志打印框架(支持打印策略自定义,默认提供2种策略:logcat打印和磁盘打印)...相关推荐
- Qt重定向QDebug,自定义一个简易的日志管理类
0.前言 相对于第三方的日志库,在 Qt 中使用 QDebug 打印更便捷,有时候也需要对 QDebug 输出进行重定向,如写入文件等. 在 Qt4 中使用 qInstallMsgHandler 函数 ...
- 基于Vue实现一个简易的小程序框架,浅谈kafka | 每日掘金第 194 期
Hello,又到了每天一次的下午茶时间.酱酱们的下午茶新增优质作者介绍和码上掘金板块,专注于发掘站内优质创作者和优质内容,欢迎大家多提宝贵意见! 酱酱们的下午茶全新改版,欢迎大家多提宝贵意见! 本文字 ...
- 从零开始实现一个简易的Java MVC框架(六)--加强AOP功能
前言 在前面从零开始实现一个简易的Java MVC框架(四)--实现AOP和从零开始实现一个简易的Java MVC框架(五)--引入aspectj实现AOP切点这两节文章中已经实现了AOP功能并且引用 ...
- 依赖注入[5]: 创建一个简易版的DI框架[下篇]
为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在<依赖注入[4]: 创建一个简易版的DI框架[上篇]> ...
- 从零开始实现一个简易的Java MVC框架(九)--优化MVC代码
前言 在从零开始实现一个简易的Java MVC框架(七)--实现MVC中实现了doodle框架的MVC的功能,不过最后指出代码的逻辑不是很好,在这一章节就将这一部分代码进行优化. 优化的目标是1.去除 ...
- 设计一个简易的引导任务框架(2) | 4.23粉丝赠书
今天是4.23世界读书日,公众号向支持的小伙伴们送出下面3本技术图书(三选一)! 参与方式: 本文点赞留言,必须超过20字,以及你想要的图书名字参与活动 积赞最多的前3名读者,将会获得赠书,三选一 活 ...
- (Dijkstra算法)设计实现一个全国大城市间的交通咨询程序,为旅客提供三种最优决策方案:(1)飞行时间最短(2)费用最小(3)中转次数最少。
设计实现一个全国大城市间的交通咨询程序,为旅客提供三种最优决策方案: (1)飞行时间最短 (2)费用最小 (3)中转次数最少 数据如下: 机 号 出 发 地 到 达 地 出发时间 到达时间 费 用 ...
- 【Android实战】记录自学自己定义GifView过程,能同一时候支持gif和其它图片!【有用篇】...
之前写了一篇博客.<[Android实战]记录自学自己定义GifView过程,具体解释属性那些事! [学习篇]> 关于自己定义GifView的,具体解说了学习过程及遇到的一些类的解释,然后 ...
- android开发骰子动画,GitHub - jieyou/dice: 一个css3 3d动画效果的色子(或称骰子?)...
dice -- 3d色子(或称骰子?) 一个css3 3d动画效果的色子 完全效果(完全流畅的3d动画.阴影.圆角):Chrome\Firefox\Safari\iOS Safari 6.0+\And ...
- java tomcat 日志分析工具_设计一个Tomcat访问日志分析工具
常使用web服务器的朋友大都了解,一般的web server有两部分日志: 一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息 二是访问日志信息,它记录的访问的时间,IP,访问的资 ...
最新文章
- 计算机专业数控,数控专业的月薪是多少 数控专业能干什么
- 关注CIO 3.0:企业CIO的最佳时代到来
- JMS详细的工作原理
- poj 2247 Humble Numbers
- 浅谈在Java开发中的枚举的作用和用法
- C/S模型UDP实现
- 滑动窗口限流 java_Spring Boot 的接口限流算法优缺点深度分析
- 不会配置HTTPS?给我5分钟,手把手教你
- oracle 查看锁死的表
- 不间断电源ups标准_UPS不间断电源除尘技巧分析
- busybox linux内核,使用busybox创建精简linux内核实例
- 大数据是如何改变零售行业的
- 一个好的函数(gcd)求最小公约数
- 计算机基础cpu知识,CPU基础知识大全详解
- 计算机二级vb题库公众号,计算机二级vb题库
- 多张图片合成一张jpg工具_将多张图片合并成一张图片的小工具Collagerator
- android8.1 BLE从设备开发MAC地址随机问题
- 护肤品html作业,聚美优品美容产品热点.html
- 怎么保存网页为html格式,怎样保存网页部分内容为html格式?
- 步进电机相关基础知识及常见问题(转载)