首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有一种方法可以使用timber for android在发布版本中记录文件名?

在发布版本中使用Timber for Android记录文件名的方法是通过自定义Timber的日志输出格式来实现。Timber是一个强大的日志库,可以帮助开发者在Android应用中进行日志记录和调试。

要记录文件名,可以创建一个自定义的Timber.DebugTree,并重写其log方法。在log方法中,可以通过StackTraceElement获取当前的调用栈信息,包括文件名、行号等。然后将这些信息添加到日志中。

以下是一个示例代码:

代码语言:txt
复制
import timber.log.Timber;

public class CustomDebugTree extends Timber.DebugTree {
    @Override
    protected void log(int priority, String tag, String message, Throwable t) {
        StackTraceElement[] stackTrace = new Throwable().getStackTrace();
        if (stackTrace.length >= 6) {
            StackTraceElement element = stackTrace[5];
            String fileName = element.getFileName();
            int lineNumber = element.getLineNumber();
            message = "[" + fileName + ":" + lineNumber + "] " + message;
        }
        super.log(priority, tag, message, t);
    }
}

然后,在应用的Application类中初始化Timber,并使用自定义的DebugTree:

代码语言:txt
复制
import android.app.Application;
import timber.log.Timber;

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        if (BuildConfig.DEBUG) {
            Timber.plant(new CustomDebugTree());
        }
    }
}

这样,在调试版本中,使用Timber打印日志时,会在日志中包含文件名和行号信息。注意,这个方法只在调试版本中生效,发布版本中不会记录文件名。

推荐的腾讯云相关产品:腾讯云移动推送(https://cloud.tencent.com/product/tpns)可以帮助开发者实现消息推送功能,方便与用户进行实时互动。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 日志记录杂谈 - Logger,Timber,logback-android

老套路,先附上Timber的源码地址: github.com/JakeWharton… 在build.grade中引入Timber: compile 'com.jakewharton.timber:timber...:4.3.1' 在继承Application的自定义类中,设置Timber的树,其实Timber是类似管理着一片森林,具体用哪棵树是你自己这边决定的。...} } 然后就可以使用了 Timber.tag("code_gg"); Timber.d("test Timber %d",10); 然后上面的FileLoggingTree是我这边自己写的一棵树...logback-android很强大,可以存储信息到 -files -SQLite databases -logcat -sockets -syslog -email 所以我们可以用Timber配合logback-android...信息: 现在可以用logback-android 来写一颗树供Timber来使用: public class FileLoggingTree extends Timber.DebugTree {

44110

基于开源项目搭建属于自己的技术堆栈

在 Logcat 中完美的格式化输出,再也不用担心和手机其他 APP 或者系统的日志信息相混淆了 包含线程、类、方法信息,可以清楚地看到日志记录的调用堆栈 支持跳转到源码处 支持格式化输出 JSON、XML...不过 ActiveAndroid 已经基本上处于维护阶段了,最新的一个 Release 版本是在 2012 年发布的。...与 ActiveAndroid 类似,ormlite 也已经不是一个活跃的开源库,最近一次 Release 版本是在 2013 年发布的。...而且 greenDAO 处在高度活跃中,最新 Release 版本是在 2017 年 3 月份发布的 5.4 Realm Realm 是一个全新的移动数据库引擎,它既不是基于 iOS 平台的 Core...Volley 设计了一个灵活的网络栈适配器,在 Android2.2 及之前的版本中,Volley 底层使用 Apache HttpClient,在 Android2.3 及以上版本中,它使用 HttpURLConnection

1.9K70
  • 开发必须了解的10个Android库

    你可以点击通知栏的Chuck来进入Chuck的界面去查看完整的http请求记录。测试团队也可以通过Chuck来检验某个问题是Android端的还是服务端导致的。...Chuck有时候功能不仅可以代替log,因为app在重启之后可能会丢失log记录,而Chuck会记录下来。 ? Glide 众所周知,Android在处理图片方面的系统API非常不友好。...不过如果你的项目已经在使用JodaTime,不建议换到ThreeTen,如果是新项目的haul,强烈建议使用ThreeTen。 Timber Timber是一个基于Andorid Log的log库。...Android的log功能不够强大,很多项目都开发了自己的log工具。Timber可以轻松的打开和关闭log,它对string log的格式化,还有异常的处理也都有很好的支持。...Android应用:@Scope和@Subcomponent总的来说,依赖注入是一种把小模块以最少努力的方式提供给其他模块使用的方式。

    2.3K50

    使用 Dagger 自定义 WorkManager

    如果您还没开始使用 Dagger,或者希望了解更多有关它的信息,请查阅以下资料:官方指南、 Codelab 实战教程 以及我们近期发布的关于在 最新 Android Studio 中使用 Dagger...您可以在 github 的 iosched 仓库中的 ADSsched 分支 中查看引入了此功能的提交 (commits)。...原因是我们使用了一个 DelegatingWorkerFactory 来协调那些单个的工厂(此时,我们在 IOsched 中只有一个工厂,但是我们以一种在需要时可以直接添加更多工厂的方式来构建它): IoschedWorkerFactory.kt....setWorkerFactory(ioschedWorkerFactory) .build() } 源码:debugRelease SharedModule.kt 同时,发布版本使用默认调试级别来设置自定义工厂...如果您有任何疑问,可以在评论区中留言。 编码愉快!

    80460

    Lifecycle你真的懂了吗?

    (image-614e69-1649222135014)] 使用Lifecycle的方法很简单: 先创建Observer,可以直接继承父类:LifecycleObserver public class...然后在Activity#OnCreate()中调用如下方法: lifecycle.addObserver(LocationObserver()) 接着,你就可以使用Lifecycle的能力了。...从源码了解过程 如果是MVP,你可以让你的Presenter去实现Observer,在处理逻辑时获得感知的能力。...在onCreate()中注入ReportFragment,在生命周期回调后,通过getLifecycle()的方法得到LifecycleRegistry对象中的handleLifecycleEvent(...LifecycleRegistryshi生命周期注册,记录,派发事件的地方,理解状态和事件的关系,对我们搞清楚LifecycleRegistry非常有帮助,下面以在onResume()中调用lifecycle.addObserver

    90820

    15 个 Android 通用流行框架大全

    Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管理图像和他们使用的内存的库 Glide 一个图片加载和缓存的库 3....数据库 名称 描述 OrmLite JDBC和Android的轻量级ORM java包 Sugar 用超级简单的方法处理Android数据库 GreenDAO 一种轻快地将对象映射到SQLite数据库的...依赖注入 名称 描述 ButterKnife 将Android视图和回调方法绑定到字段和方法上 Dagger2 一个Android和java快速依赖注射器。...响应式编程 名称 描述 RxJava JVM上的响应式扩展 RxJavaJoins 为RxJava提供Joins操作 RxAndroid Android上的响应式扩展,在RxJava基础上添加了Android...Log框架 名称 描述 Logger 简单,漂亮,强大的Android日志工具 Hugo 在调试版本上注解的触发方法进行日志记录 Timber 一个小的,可扩展的日志工具 13.

    1.3K20

    15 个 Android 通用流行框架大全

    一个Java序列化/反序列化库,可以将JSON和java对象互相转换 Jackson Jackson 可以轻松地将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java...的库 6 数据库 名称 描述 OrmLite JDBC和Android的轻量级ORM java包 Sugar 用超级简单的方法处理Android数据库 GreenDAO 一种轻快地将对象映射到SQLite...数据库的ORM解决方案 ActiveAndroid 以活动记录方式为Android SQLite提供持久化 SQLBrite SQLiteOpenHelper 和ContentResolver的轻量级包装...Realm 移动数据库:一个SQLite和ORM的替换品 7 依赖注入 名称 描述 ButterKnife 将Android视图和回调方法绑定到字段和方法上 Dagger2 一个Android和java...Android日志工具 Hugo 在调试版本上注解的触发方法进行日志记录 Timber 一个小的,可扩展的日志工具 13 测试框架 名称 描述 Mockito Java编写的Mocking单元测试框架

    1.5K60

    Android通用流行框架汇总

    Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管理图像和他们使用的内存的库 Glide 一个图片加载和缓存的库 ---- 3....数据库 名称 描述 OrmLite JDBC和Android的轻量级ORM java包 Sugar 用超级简单的方法处理Android数据库 GreenDAO 一种轻快地将对象映射到SQLite数据库的...依赖注入 名称 描述 ButterKnife 将Android视图和回调方法绑定到字段和方法上 Dagger2 一个Android和java快速依赖注射器。...响应式编程 名称 描述 RxJava JVM上的响应式扩展 RxJavaJoins 为RxJava提供Joins操作 RxAndroid Android上的响应式扩展,在RxJava基础上添加了Android...Log框架 名称 描述 Logger 简单,漂亮,强大的Android日志工具 Hugo 在调试版本上注解的触发方法进行日志记录 Timber 一个小的,可扩展的日志工具 ---- 13.

    96730

    drone无人机app下载苹果版_drone无人机教程视频

    目录 文章目录 目录 摘要 1.实例化无人机及地面站控制对象 2.绑定服务 3.增加连接点击事件及进行连接 摘要 本节主要记录HelloDrone的连接过程及Mavlink协议解析过程。...,在onStart方法之前启动 */ protected void onCreate(Bundle savedInstanceState) { //调用父类的onCreate...默认情况下Spinner显示的是当前选择的值, // 点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner选择一个新值...先调用Ardupilot中的方法: public void onMavLinkMessageReceived(MAVLinkMessage message) { Log.i...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170568.html原文链接:https://javaforall.cn

    3.1K20

    Android MVVM 架构应用实现

    [MVVM架构图] 了解了MVVM的基本架构和其中各个组件的作用,可以开始代码实现了。我做这个项目的初衷是因为最近在整理收集Android常用的开源库,为了更方便的展示所实现的一个应用。...本项目使用Bmob直接作为后台数据库,接入Bmob SDK后调用API可以直接获取数据,以此来模拟后台接口。...,并实现获取数据后的操作 private fun initRegister() { //LiveData在视图层中注册监听后,在ViewModel中的数据改变时可以持续收到数据...,此外MVVM架构还经常和Retrofit、RxJava等开源库配合使用,希望以后有机会可以再进行实践操作!!...本项目使用开源组件库:koin、timber、permissionx、BaseRecyclerViewAdapterHelper 视频:Android中高级进阶之MVVM与JetPack

    1.3K20

    Android | 关于 OOM 的那些事

    在回收方面,Dalvik 仅固定一种回收算法,而 ART 回收算法可在运行期按需选择,并且ART 具备内存整理能力,减少内存空洞。...java 方法执行时的所有数据,由栈贞组成,一个栈贞就代表一个方法的执行,每个方法的执行就相当于是一个栈贞在虚拟机中从入栈到出栈的过程。...Java 栈划分为操作数栈,栈帧数据和局部变量数据,方法中分配的局部变量在栈中,同时每一次方法的调用都会在栈中奉陪栈帧,栈的大小是把双刃剑,分配太小可能导致栈溢出,特别是在有递归,大量的循环操作的时候。...在分代垃圾回收中,内存被分为不同的年代,每个年代使用不同的垃圾回收算法进行处理,年轻代使用标记复制算法,老年代使用标记清除法,这样可以更好的平衡内存分配效率和垃圾回收效率 ART ART 是在 Android...Android Profile 可以以图像的方式直观的查看内存使用情况,并且可以直接 capture heap dump,或者抓取原生内存(C/C++) 以及 Java/Kotlin 内存分配。

    1.6K20

    实用的 Android 开源库整理

    在Android的开发过程中,每个开发者或多或少的都使用过第三方的开源库,使用第三方的开源库可以给开发者节省大量的精力和时间,进而更好的关注应用本身的业务逻辑。...能够加载网络、本地数据库、本地资源中的图像,在图像加载出来之前,还能够预先设置一个预设的图像占位符,有二级缓存(内存和硬盘缓存) dependencies { // your app's other...Java 8的lambda,可以使用下面的代码 Flowable.just("Hello world") .subscribe(new Consumer() { @Override...:1.0.1' Android Debug Database Android Debug Database是一个强大的开源库,开发者通过它可以调试数据库和 SharedPreferences,可以直接通过浏览器查看数据库和...'com.jakewharton.timber:timber:4.5.1' Androig GPU Image 提供了基于 OpenGL的图像滤镜框架 repositories { jcenter

    71110

    使用 Kotlin API 实践 WorkManager

    在这个 WorkManager codelab 教程中,我们会对图片进行模糊化处理,并且将处理后的数据存储在磁盘上。我们看一下这个过程中需要哪些操作。...添加 work-runtime-ktx 依赖: // 获取最新的版本号 https://developer.android.google.cn/jetpack/androidx/releases/work...您可以扩展 Worker 类,并且复写 doWork() 方法。由于这个类非常重要,我们会在后边内容中进行详细介绍。这里是它最初的实现代码。...如果您需要执行异步操作,比如在数据库中存储数据或者发起网络请求,在 Kotlin 中,我们推荐使用 CoroutineWorker。...CoroutineWorker 通过使用 Kotlin 协程来执行异步任务。 doWork() 方法是一个 suspend 方法。也就是说我们这里可以调用可挂起的 dao 函数。

    53230

    看到如此多的MVP+Dagger2+Retrofit+Rxjava项目,轻松拿star,心动了吗?

    config.build 因为在顶级build.gradle中引用了它,所以在整个项目的所有build.gradle中都可以使用rootProject.xxx来使用它里面的内容 dependencies...v1.5 版本前是使用 ServiceManager 和 CacheManager 来管理,在v1.5版本之后使用 RepositoryManager 替代 自行定义 Retrofit Service...Rxjava的全局错误处理,需在全局配置类中通过GlobalConfigModule.Builder.responseErroListener()方法传入ResponseErroListener,并在每次使用...(app)的build.gradle中配置是否开启打印Log或则是否使用LeakCanary,等调试工具 在build.gradle中配置 android { buildTypes {...Activity(未调用onPause),AppManager封装有多种方法,可以很方便的对它们进行操作,也可以在未持有AppManager的情况下,通过EventBus远程遥控它的所有方法,这样我们可以在整个

    2.9K30

    【玩转 Cloud Studio】Android 中关于 OOM 的那些事

    在回收方面,Dalvik 仅固定一种回收算法,而 ART 回收算法可在运行期按需选择,并且ART 具备内存整理能力,减少内存空洞。...**,用来存放 java 方法执行时的所有数据,由栈贞组成,一个栈贞就代表一个方法的执行,每个方法的执行就相当于是一个栈贞在虚拟机中从入栈到出栈的过程。...Java 栈划分为操作数栈,栈帧数据和局部变量数据,方法中分配的局部变量在栈中,同时每一次方法的调用都会在栈中奉陪栈帧,栈的大小是把双刃剑,分配太小可能导致栈溢出,特别是在有递归,大量的循环操作的时候。...> > 在分代垃圾回收中,内存被分为不同的年代,每个年代使用不同的垃圾回收算法进行处理,年轻代使用标记复制算法,老年代使用标记清除法,这样可以更好的平衡内存分配效率和垃圾回收效率 #### ART ART...是在 Android 5.0 中引入的虚拟机,与 DVM 相比,**ART 使用的是 AOT(Ahead of Time) 编译技术**,这意味着他将应用程序的字节码转换为本机机器码,而不是在运行时逐条解释字节码

    1K30

    android 应用的证书签名跟系统签名

    在android studio中直接运行项目生成的都是测试版debug安装文件且android studio使用了一个默认的keystore文件进行了自动签名,该签名的位置可在android studio...右侧的工具栏的gradle ->项目名->app->task->android->signingReport文件查看 方法一 程序的正式发布版release版本需要使用一个正式的keystore...文件来进行签名,使用android studio生成签名文件的方式有两种,一种是使用android studio导航栏上的Build->Generate Signed Bundle/APK 上图的...apk文件 该文件名被我设置为固定文件名,如果未设置生成文件名则是app-release.apk 如果前面选择创建Android App Bundle文件则这里会得到一个.aab后缀的签名文件 方法二...注意:证书签名可以生成release版本的apk,相比于使用默认证书生成的debug版本apk,release版本更小,运行速度更快,当然也可以直接发布debug版本的apk 2.系统签名 要实现apk

    1.9K20

    Android|集成 slf4j + logback 作为日志框架

    基于这个需求,我搜了一下「Android 日志框架」,大多网友推荐的是 logger、timber、xLog 等等,看着也不错。...不过出于几年后端开发的经验和习惯,我进一步了解,发现熟悉的 log4j 和 logback 在 Android 上也有人做过适配,所以最终决定使用 slf4j + logback,以在前后端开发中取得一致的体验...所以,本文将从零开始,记录如何在 Android APP 中集成 slf4j + logback 作为日志框架,并使用 Lombok 注解生成日志对象。...:logback-android:3.0.0' } 如果是单模块项目,可以直接在 app/build.gradle 文件中添加,如果是多模块项目,可以在一个公共模块的 build.gradle 文件中添加...slf4j + logback 的记录了,至此我「统一」了 Java 后端和 Android 客户端打印日志的用法,在避免多项目维护造成「精神分裂」的路上前进了一小步。

    1.1K30

    【Android】Android开发架构规范【转】

    目录下文件名称较固定,不得随意更改 代码提交规范 我们使用的无论是git,还是svn都需要遵守下面这些规范,个人比较倾向于git。...对开源库的选取,一般都需要选择比较稳定的版本,还有作者在维护的项目,比如这里在github搜索image,出现的安卓中的图片加载库。...无论是在mvp,mvc,还是mvvm中,提供一个统一的数据入口,都可以让代码变得更加易于维护。...比如DataManager中的退出登录方法可以发送一个事件,订阅这个事件的多个Activity在接收到该事件后就能够更改它们的UI视图,从而显示一个登出状态。...当然你也可以有很多的选择,EventBus,Otto,自定义RxBus等。减少回调。 添加日志打印,用于查找错误等。 logger 以及timber是我推荐的。

    1.2K90
    领券