Xamarin Android - 关闭 Mono 日志
Posted
技术标签:
【中文标题】Xamarin Android - 关闭 Mono 日志【英文标题】:Xamarin Android - Turn off Mono Logs 【发布时间】:2015-01-01 20:34:38 【问题描述】:这可能是一件很挑剔的事情,但在 Xamarin 中运行 android 应用程序时,它会在控制台中转储大量以 [Mono]
开头的行
有没有办法禁用这些日志?
提前致谢
【问题讨论】:
【参考方案1】:这可以通过改变设备上Monos执行环境的状态来实现;这只是一组改变 Monos 行为的环境变量(垃圾收集、日志记录等)。在这种情况下,要更改日志记录行为,我们需要修改存储在环境变量 MONO_LOG_LEVEL
和 MONO_LOG_MASK
中的值。
Xamarin.Android 提供了 2 种机制开发人员可以用来更改执行环境:
1. 使用adb shell setprop debug.mono.env
。这可以作为构建后操作来完成。
2. 使用环境构建文件更改每个项目的执行环境状态。
我更喜欢使用方法 2,因为编辑文本文件比更改构建操作更容易。使用下面列出的步骤执行此操作。
添加环境文件
将名为 environment.txt
的纯文本文件添加到 Xamarin.Android 项目的根路径。
右击environment.txt
并将其构建操作设置为AndroidEnvironment
。
环境文件是由换行符分隔的一系列 key=value 对。对于日志记录,我们可以设置以下变量:
MONO_LOG_LEVEL
调试 信息 消息 警告 严重 错误MONO_LOG_MASK
asm dll cfg 全部 类型 gc例如,我们可以通过错误过滤MONO_LOG_LEVEL
来忽略大多数消息:
environment.txt
MONO_LOG_LEVEL=error
背景阅读:
Android Environment Mono - Logging Runtime Events【讨论】:
非常感谢,马特!回答我的问题,然后一些:) Pleasure :) 仅供参考,该文件还用于控制 Mono 使用哪种垃圾收集算法。如果您的应用在 GC 崩溃并因此变得无响应,您可以使用MONO_GC_PARAMS=bridge-implementation=##
来试验不同的算法。
我做了所有这些,但不确定它是否改变了什么。我怎么知道这些参数被正确编译了?
@matthewrobbinsdev 我一定是做错了什么。我已经创建了文件并将构建操作设置为 AndroidEnvironment 但我不认为它正在接受它。我可以在文件中出现乱码,并且没有构建错误。我想我可以通过电子邮件发送 Xamarin 支持。
这么多年的痛苦,终于有了谷歌搜索的聪明主意:))谢谢马特!【参考方案2】:
我所做的如下。它仍然不完美,因为窗口包含 10k 日志,包括隐藏的日志,所以我的最终消失了。此外,我似乎无法从窗口复制。
1) 为我的所有日志使用“AAA”标签。 2) 在工具>Android>设备日志中查看输出 3) 按标签按字母顺序排序。 4)我发现我下面的输出仍然让人分心。我可以单击标签的“过滤器”并取消选中除我之外的所有内容。烦人的是,我必须定期重复此步骤,因为默认情况下不会过滤新标签。
【讨论】:
如何添加“标签”?以上是关于Xamarin Android - 关闭 Mono 日志的主要内容,如果未能解决你的问题,请参考以下文章
用 C# (Xamarin) 编写 Android 应用程序 [关闭]
Xamarin - 如何更新 Mono.Android 版本以解决依赖关系?
适用于 Xamarin.Android 的便携式裁剪图像活动(Android 的 Monodroid / Mono)
gles2 动态壁纸转换为 c# (xamarin) 符合错误“...mono.android.TypeManager 无法应用于