问题描述
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.LogManager
和Uno.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()
调用中添加您的名称空间。