【问题标题】:Usage of Prism's DebugLoggerPrism DebugLogger 的使用
【发布时间】:2016-10-21 09:26:35
【问题描述】:

我现在尝试在 Xamarin.Forms 上使用 Prism6.1.0-pre5 的 Prism.Logging.DebugLoggerLog 方法来记录我的应用程序。 但它不输出任何东西。

DebugLoggerthis 中实现。 但是在程序集浏览器中,Debug.WriteLine(messageToLog); 行不会像这样出现: .

这与这个问题有关吗?如何正确使用?

【问题讨论】:

  • 您如何获得对记录器的引用?你在调试模式下运行吗?你彻底检查了输出窗口吗?
  • @BrianLagunas 我没有任何参考资料。我刚刚从 Prism 的源代码中找到,并且对使用它很感兴趣。 / 可能是的,我正在使用 [Debug > iPhone 6s iOS 9.3] 在调试模式下运行。有没有关于调试模式的选项? / 是的,我检查了输出窗口。如果我运行System.Diagnostics.Debug.WriteLine("hello");,我的输出窗口会显示“hello”。

标签: c# xamarin xamarin.forms prism xamarin-studio


【解决方案1】:

它不输出任何内容,因为正如您在反编译器中看到的(Xamarin Studio 的程序集浏览器实际上反编译 .NET 代码),Log 实现并没有做太多,它只是调用 string.Format

您很可能使用的是 Prism.dll 的发布版本,可能是由 NuGet 获得的,因此当作者编译 Prism.dll 以分发到 NuGet 时,Debug.WriteLine 被编译器删除。

另一件事:Xamarin Forms PrismApplicationBase 创建的默认记录器是 DebugLogger。 当导航到页面时发生错误(例如,我在 XAML 中有错误),PageNavigationService 中的实现调用默认记录器写入错误,然后抛出错误:

https://github.com/PrismLibrary/Prism/blob/master/Source/Xamarin/Prism.Forms/Navigation/PageNavigationService.cs#L374

由于上述原因未写入默认记录器错误,但即使PageNavigationService 引发错误,输出窗口中也不会显示任何内容,并且应用程序也不会崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 2020-09-21
    相关资源
    最近更新 更多