有没有办法以某种方式拦截对标准Log in android的调用并执行其他一些操作?
在桌面Java中,人们通常会得到一些记录器,因此有办法安装不同的日志处理程序/实现。但是,Android似乎有一个静态调用Log,我找不到任何有关替换默认行为的信息。
我意识到我可以通过ADB监控设备日志,但我想在选择加入的设备上运行应用程序时有不同的行为(例如,在程序启动时执行某条指令)。
答案 0 :(得分:4)
正如AedonEtLIRA指出Log是最终的,所以你需要滚动/借用一个新的。我一直在使用Prasanta Paul的“MLog”:http://prasanta-paul.blogspot.com/2010/07/custom-logger-for-android.html
可以轻松地将日志保存到文本文件和/或完全禁用日志记录。 如果它还没有满足您的需求,那么它就是管理日志记录的良好基础。
答案 1 :(得分:3)
我认为您最好的解决方案是将您应用中的所有Log
来电替换为您自己的班级MyLog
,然后如果他们不选择加入,请致电Log
,如果他们选择加入,请调用您的特殊日志记录功能。
替换所有日志调用应该不难,只需查找和替换。
答案 2 :(得分:3)
除了@Darrell提出的MLog之外,Android还有其他几个日志框架,包括:
在这三者中,logback(下一代log4j)似乎是最强大的,拥有最丰富的API(和批次的文档),而microlog是最紧凑的(但是限制在功能...但也许它可以满足您的所有需求)。这三个都支持SLF4J日志记录,因此您可以轻松地将microlog替换为logback,log4j,jul或更新的框架。
与MLog一样,这些框架需要将调用替换为android.os.util.Log
(它不会“拦截”您之后的调用)。
答案 3 :(得分:2)
因为Log
是最终的,我认为你必须编写自己的日志记录系统并实现它,如果你想改变任何东西。