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_LEVELMONO_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 无法应用于

如何获取 Mono Xamarin Android 应用程序路径文件夹?

运行 Mono Android 示例