Android第三方log库——Logger

Log在Android日常开发中的重要性不言而喻,出现bug后的第一件事基本都是先看log。但是在使用Android原生Log类时,通常需要先定义一个静态TAG,然后Log.d(TAG,"message");,为了解决在项目上线时去掉log的需求,我们通常会再封装一个LogUtil类来实现这个功能,未免有些繁琐。既然有现成的轮子可以更高效、更简洁、更美观的解决log的问题,那我们何乐而不为呢。

OverView

Simple, pretty and powerful logger for android

正如Github主页https://github.com/orhanobut/logger介绍的一样,Logger的使用特别简单,相比Android原生log只多了一步初始化操作,但是Logger会让打印更下明晰,更加美观。如下:

Android Studio配置

implementation 'com.orhanobut:logger:2.2.0'

初始化

Logger需要在项目的Application中进行初始化操作,也可以根据具体需求自定义属性。

基础使用

Logger.addLogAdapter(new AndroidLogAdapter());

控制隐藏日志

Logger.addLogAdapter(new AndroidLogAdapter(){
    @Override
    public boolean isLoggable(int priority, @Nullable String tag) {
        //也可以根据priority的VERBOSE、DEBUG、INFO、WARN、ERROR等不同级别
        //进行过滤,只在发布版本中保留ERROR的打印等
        return BuildConfig.DEBUG;   //只在DEBUG模式下打印log
    }
});

自定义属性

FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
        .showThreadInfo(true)                   //是否打印当前线程
        .methodCount(2)                         //方法数显示多少行,默认两行
        .methodOffset(5)                        //隐藏方法内部调用到偏移量,默认5
        .tag("Logger Demo")                     //自定义TAG,Logger打印会使用同一个TAG
        .build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));

保存log文件

FormatStrategy formatStrategy = CsvFormatStrategy.newBuilder()
        .tag("TAG")
        .build();
Logger.addLogAdapter(new DiskLogAdapter(formatStrategy){
    @Override
    public boolean isLoggable(int priority, @Nullable String tag) {
        return BuildConfig.DEBUG;
    }
});

自动保存到log文件这个功能比较坑的是不能指定log文件路径,只能使用默认的路径

打印

d、e、w、v、i和wtf

Logger.d("Log d");
Logger.e("Log e");
Logger.w("Log w");
Logger.v("Log v");
Logger.i("Log i");
Logger.wtf("Log wtf");

每种打印方法都有多个重载方法,不同重载方法的差异各位自己摸索吧,不具体说了,大同小异。 需要注意的是各种只有一个参数的打印方法中,只有Logger.d的参数是Object其他都是String型变量。

打印Exception

try {
    int[] a = {1,2,3};
    a[4] = 4;
} catch (Exception e) {
    e.printStackTrace();
    Logger.e(e, "message");
}

为什么单独说下Exception的打印呢,一来Exception的打印方式是有点特别,再者主要是展示Logger的打印真的是既美观又直观啊。系统打印与Logger的对比如下:

打印xml和json

Logger.json(jsonStr);
Logger.xml(xmlStr);

这两个方法会是json和xml数据进行格式化输入,更易于阅读。如下:

临时TAG

因为Logger使用统一的TAG,如果想要使用不同的TAG进行打印可以:

Logger.t("MyTag").d("用临时TAG打印");

转载于:https://my.oschina.net/zhongsm/blog/3018908

### 如何在 Allure 中集成 Log 日志记录 为了实现 `Allure` 报告中的日志记录功能,可以通过配置 Python 的标准 `logging` 和第三方 `loguru` 来达成这一目标。具体来说,在测试脚本中引入 `loguru` 并设置自定义的日志处理器来捕获并传递给 `logging` 模块处理。 #### 使用 `loguru` 结合 `logging` 通过创建一个继承自 `logging.Handler` 类的类——`PropogateHandler`,可以在其中重写 `emit()` 方法以便将来自 `loguru` 的日志消息转发至 `logging` 系统[^1]: ```python import logging from loguru import logger class PropagateHandler(logging.Handler): def emit(self, record): # 获取原始日志记录器名称,并将其交给对应的logger实例处理 logging.getLogger(record.name).handle(record) # 添加 PropagateHandler 到 loguru,默认会输出到控制台 logger.add( PropagateHandler(), format="{time:YYYY-MM-DD at HH:mm:ss} | {message}" ) ``` 上述代码片段展示了如何让 `loguru` 输出的内容能够被 `logging` 所接收,从而进一步由 `allure-pytest` 插件捕捉这些信息作为附件附加到最终生成的 HTML 报表里去。 对于希望确保每次运行 pytest 测试框架时都能正常显示完整的日志内容,则建议不要使用 `-s` 参数启动命令行工具;因为该参数会影响标准输入输出流的行为,进而干扰正常的日志收集过程[^2]。 另外值得注意的是,当涉及到移动端应用自动化测试场景下(比如基于 Appium 对 Android 应用做 UI 层面的功能验证),除了基本的日志外还可以考虑加入更多上下文信息辅助排查问题所在,例如页面截图等操作。 最后提醒一下关于持续集成方面的好处:频繁地把个人修改同步回项目主线有助于尽早暴露潜在冲突以及质量问题,使得整个团队能更加高效稳定地推进产品研发进度[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值