【问题标题】:Xamarin Android - Turn off Mono LogsXamarin Android - 关闭 Mono 日志
【发布时间】:2015-01-01 20:34:38
【问题描述】:

这可能是一件很挑剔的事情,但在 Xamarin 中运行 Android 应用程序时,它会在控制台中转储大量以 [Mono] 开头的行

有没有办法禁用这些日志?

提前致谢

【问题讨论】:

    标签: android logging mono console xamarin


    【解决方案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
    

    背景阅读:

    【讨论】:

    • 非常感谢,马特!回答我的问题,然后一些:)
    • Pleasure :) 仅供参考,该文件还用于控制 Mono 使用哪种垃圾收集算法。如果您的应用在 GC 崩溃并因此变得无响应,您可以使用 MONO_GC_PARAMS=bridge-implementation=## 来试验不同的算法。
    • 我做了所有这些,但不确定它是否改变了什么。我怎么知道这些参数被正确编译了?
    • @matthewrobbinsdev 我一定是做错了什么。我已经创建了文件并将构建操作设置为 AndroidEnvironment 但我不认为它正在接受它。我可以在文件中出现乱码,并且没有构建错误。我想我可以通过电子邮件发送 Xamarin 支持。
    • 这么多年的痛苦,终于有了谷歌搜索的聪明主意:))谢谢马特!
    【解决方案2】:

    我所做的如下。它仍然不完美,因为窗口包含 10k 日志,包括隐藏的日志,所以我的最终消失了。此外,我似乎无法从窗口复制。

    1) 为我的所有日​​志使用“AAA”标签。
    2) 在工具>Android>设备日志
    中查看输出 3) 按标签按字母顺序排序。
    4)我发现我下面的输出仍然让人分心。我可以单击标签的“过滤器”并取消选中除我之外的所有内容。烦人的是,我必须定期重复此步骤,因为默认情况下不会过滤新标签。

    【讨论】:

    • 如何添加“标签”?
    猜你喜欢
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多