关键词:
【中文标题】如何监控 android.util.log 或覆盖它?【英文标题】:How can I monitor android.util.log or override it? 【发布时间】:2019-08-31 07:15:20 【问题描述】:我在项目的任何地方都使用 log.d/v/w/e。
现在,我想将所有日志保存到设备本地文件中。
然而,android.util.Log类在final类中。
这意味着我无法扩展它。
有没有办法接管对android.util.Log的控制,这样我就不需要在项目中到处更改log.d/v/w/e了?
我正在寻找一种简单的方法来了解 log.d/v/w/e 是否被调用,以便我可以将信息写入本地文件。
【问题讨论】:
【参考方案1】:当您需要添加最终类的功能时,一个常见的选择是使用装饰器(包装器)模式:
public class LogUtils
public static void LOGE(String tag, String message)
Log.e(tag, message);
doSomethingElse();
...
这种日志记录的实现非常流行。
但是,还有另一种选择来编写自己的包装器。 Jake Wharton 的库 Timber 已经处理了所有实用程序,并添加了一些其他细节,例如自动标记和 Java 中 String.format 的使用。
您可以添加自己的功能来处理自己的诊断逻辑,如下所示:
public class MyLoggingClass extends DebugTree
@Override
public void log(int priority, String tag, String message, Throwable t)
if (BuildConfig.DEBUG)
super.log(priority, tag, message, t);
doSomethingElse();
【讨论】:
【参考方案2】:从文件中删除任何“import android.util.Log”,您可以包含自己的日志类:
// log.java
package com.my.package;
public class Log
public static int v(String tag, String msg) return println(android.util.Log.VERBOSE, tag, msg);
public static int d(String tag, String msg) return println(android.util.Log.DEBUG, tag, msg);
public static int i(String tag, String msg) return println(android.util.Log.INFO, tag, msg);
public static int w(String tag, String msg) return println(android.util.Log.WARN, tag, msg);
public static int e(String tag, String msg) return println(android.util.Log.ERROR, tag, msg);
public static int println(int priority, String tag, String msg)
// Do another thing
return android.util.Log.println(priority, tag, msg);
然后你可以让你所有的'Log.e'行不受干扰,但仍然拦截日志记录行。
这不是 android.util.Log 类的完全替代/实现,但它具有我使用的所有功能,并且如果您需要,它很容易扩展。
【讨论】:
如何将输出写入 Android 中的 Log?
】如何将输出写入Android中的Log?【英文标题】:HowdoIwriteoutputstotheLoginAndroid?【发布时间】:2011-01-2219:35:44【问题描述】:我想将一些调试输出写入日志以使用logcat进行查看。如果我向System.out写入内容,这已显示在logcat中。写入... 查看详情
如何查看log日志文件
...Java与C语言中输出日志:1)Java代码在程序中输出日志,使用android.util.Log类的以下5个方法:Log.v()、Log.d()、Log.i()、Log.w()、Log.e()。分对应Verbose、Debug、INFO、Warn、Error的首字母。例如:Log.i("类::函数名","日期_时间_源码文... 查看详情
如何查看log日志文件呢?
...Java与C语言中输出日志:1)Java代码在程序中输出日志,使用android.util.Log类的以下5个方法:Log.v()、Log.d()、Log.i()、Log.w()、Log.e()。分对应Verbose、Debug、INFO、Warn、Error的首字母。例如:Log.i("类::函数名","日期_时间_源码文件名_行号_日... 查看详情
如何使用android中的logcat调试程序
Android开发中,所的有输出都在logcat中包含System.out输出和printStackTrace()输出都在Logcat中,Android开发,建议使用android提供的Log工具类来打印信息。找到Logcat视图的方式:1.Eclipse点击Window。2.ShowView会出来一个对话框。3.点击最下面的other...... 查看详情
如何将 proguard 配置为仅删除 android 日志记录调用
】如何将proguard配置为仅删除android日志记录调用【英文标题】:HowtoconfigureproguardtoONLYremoveandroidloggingcalls【发布时间】:2013-03-1209:06:00【问题描述】:我正在尝试将proguard配置为仅从我的Android应用程序中删除对android.util.Log的调用... 查看详情
idea开发android,调试log打印如何可以和eclipse显示一样?
...那个工程对应显示此工程的log信息只需要打开logcat即可。Android开发中,所的有输出都在logcat中包含System.out输出和printStackTrace()输出都在Logcat中,Android开发,建议使用android提供的Log工具类来打印信息。找到Logcat视图的方式:Eclipse点击W... 查看详情
android----log
android.util.Log常用的方法有以下5个:Log.v()Log.d()Log.i()Log.w()以及Log.e()。根据首字母对应VERBOSE,DEBUG,INFO,WARN,ERROR。1、Log.v的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");2、Log.d的... 查看详情
如何“更新”或“覆盖”python 列表
】如何“更新”或“覆盖”python列表【英文标题】:Howto\'update\'or\'overwrite\'apythonlist【发布时间】:2014-10-1403:39:54【问题描述】:aList=[123,\'xyz\',\'zara\',\'abc\']aList.append(2014)printaList产生o/p[123,\'xyz\',\'zara\',\'abc\',2014]应该如何覆盖/更... 查看详情
我的android进阶之旅------>android关于log的一个简单封装
android.util.Log类,能够方便地用于在编码调试过程中打印日志。可是在公布后的产品中,假设有太多的日志打印。则会严重地影响性能。对android.util.Log类做一个简单的封装。当产品要公布的话,将Debug设为false。代码例如以下。pub... 查看详情
如何“保存”列表或如何避免列表被覆盖? [复制]
】如何“保存”列表或如何避免列表被覆盖?[复制]【英文标题】:Howdoi"save"alistorhowcanIavoidthatalistgetsoverwritten?[duplicate]【发布时间】:2014-07-0516:35:51【问题描述】:我有这个代码:defjaja(lista):lista.append(2)returnlistaa=[2,3]b=jaj... 查看详情
如何在 ActiveScaffold 中覆盖表单标题或标题
】如何在ActiveScaffold中覆盖表单标题或标题【英文标题】:HowtoOverrideFormHeadingorTitleinActiveScaffold【发布时间】:2011-01-0314:17:38【问题描述】:有没有一种简单的方法可以覆盖ActiveScaffold页面上的标题?我知道我可以自定义模型部件... 查看详情
如何仅获取一个数据框或如何覆盖数据框?
】如何仅获取一个数据框或如何覆盖数据框?【英文标题】:howcanIgetonlyonedataframeorhowtooverwritethedataframe?【发布时间】:2021-12-1416:59:34【问题描述】:df1=nameagebranchsubjectdateofjoining1Steve27MechanicalAutocad01-08-20212Adam32Electricalcontrolsys14-08... 查看详情
如何覆盖 jQuery 函数或阻止它执行
】如何覆盖jQuery函数或阻止它执行【英文标题】:HowtooverwriteajQueryfunctionorstopitfromexecuting【发布时间】:2013-04-0423:25:00【问题描述】:我有一个jQuery函数,可以将WordPress菜单转换为浮动菜单,然后再返回。我想在主题中创建一个... 查看详情
如何覆盖edgesIgnoringSafeArea(或任何视图修改器)
】如何覆盖edgesIgnoringSafeArea(或任何视图修改器)【英文标题】:HowtooverrideedgesIgnoringSafeArea(oranyViewmodifier)【发布时间】:2020-12-3106:15:59【问题描述】:我正在尝试覆盖edgesIgnoringSafeArea(_:)的功能,因为我在视图中对垂直安全区域... 查看详情
求教,如何抓取androidtracelog
您好,很高兴为您解答。1,安装SDK(参考androidsdk环境安装)2,使用数据线链接手机,在手机助手的sdcard中建立一个1.log的文件3,程序运行cmd4,输入抓取命令:logcat-s'*:E'>/mmt/sdcard/1.log5,使用手机崩溃一次6,查看日志抓... 查看详情
android日志工具log(代码片段)
Android的日志工具类是Log,属于android.util.Log包,这个类提供了5个方法来供我们打印日志。 ●Log.v()。用于打印最为繁琐的,意义最小的日志信息。对应级别为verbose,是Android日志里级别最低的一种。 (顺便来认识一下单词--... 查看详情
如何防止(覆盖或格式化或克隆其他任何内容)我的 NFC TAG?
】如何防止(覆盖或格式化或克隆其他任何内容)我的NFCTAG?【英文标题】:HowcanIprevent(overwritingorformatorcloninganythingelse)myNFCTAG?【发布时间】:2015-08-2616:42:20【问题描述】:首先,对不起我的英语不好。我创建了一个可以读写NFC... 查看详情
如何以颜色查看 Semantic React 的变量或覆盖?
】如何以颜色查看SemanticReact的变量或覆盖?【英文标题】:HowtoseevariablesoroverridesincolorforSemanticReact?【发布时间】:2020-09-2122:12:54【问题描述】:这些变量或覆盖semantic-ui->sites->...“.less”文件中的文件吗?我看到它们都是白... 查看详情