无法使用Uno Platform / UWP Head登录到控制台

问题描述

Uno如何实现(跨平台)日志记录? (主要是控制台)

我正在使用Visual Studio,启动UWP Head,当我尝试向日志中写入内容时,我期望它会出现在Visual Studio输出窗口/ Uno Platform输出中,但是在那里什么都没有显示。 / p>

我在UWP页面的“代码背后”代码中使用以下代码(作为各种“标准”记录方式,在各种存储库中找到了这些代码):

this.Log().Loginformation("My log");

但是,正如我所说,输出窗口中什么也没出现。

documentation说,要启用控制台日志记录,应使用以下代码

Uno.Logging.LogManager.LoggerSelector = Uno.Logging.ConsoleLogger.Instance.GetLog;
Uno.Logging.ConsoleLogger.Instance.LogLevel = Uno.Logging.LogLevel.Warn;

Uno.Logging.ConsoleLogger.Instance.Filter = (level,name,message,exception) =>
{
    // Provides a list of loggers that should be displayed to the console
    var passList = new[] {
        "Windows.UI.Xaml.visualstatemanager","Windows.UI.Xaml.VisualStateGroup","Windows.UI.Xaml.Controls.RadioButton",};

    return passList.Any(n => name.StartsWith(n))
        ? Uno.Logging.ConsoleLogger.FilterResult.Pass : Uno.Logging.ConsoleLogger.FilterResult.Ignore;
};

但类型Uno.Logging.LogManagerUno.Logging.ConsoleLogger不存在。它们是否在其他库/ nuGet包中定义?这段代码应该放在哪里?

编辑:

这仅发生在UWP头上。使用Wasm标头,日志消息将正确显示在浏览器的控制台中,而使用Android标头(在模拟器中运行),它们将显示在Visual Studio的“输出/调试”窗口中。抱歉,无法尝试使用iOS头。

环境:

Visual Studio 2019            16.7.3
Uno.Core                      2.0.0
Uno.UI                        3.0.17
Uno.UI.RemoteControl          3.0.17
Uno.UI.WebAssembly            3.0.17
Uno.UniversalImageLoader      1.9.32
Uno.Wasm.Bootstrap            1.3.4
Uno.Wasm.Bootstrap.DevServer  1.3.4

解决方法

呼叫this.Log()时,它将捕获this类型的全限定名称。

如果将此类型的命名空间添加到passList,它应该可以工作。

使用模板创建项目时,您将在ConfigureFilters文件中看到一个App.xaml.cs方法。在.WithFilter()调用中添加您的名称空间。

Example of such call here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...