gpt4 book ai didi

c# - 注册 ETW 提供商时遇到问题

转载 作者:太空狗 更新时间:2023-10-29 23:44:35 25 4
gpt4 key购买 nike

<分区>

我正在为 Windows 10 IoT 开发基于 UWP 的应用程序,我想配置 ETW 跟踪,以便我可以使用集成的 Web 界面远程查看日志记录:

ETW List

我相信我已经创建了必要的类型,但是我在 IoT ETW 部分显示的任何列表中都看不到我的提供商:

ETW Options

我的EventListener 实现是:

sealed class StorageFileEventListener : EventListener
{
/// <summary>
/// Storage file to be used to write logs
/// </summary>
private StorageFile _mStorageFile = null;

/// <summary>
/// Name of the current event listener
/// </summary>
private readonly string _mName;

public StorageFileEventListener(string name)
{
_mName = name;

Debug.WriteLine("StorageFileEventListener for {0} has name {1}", GetHashCode(), name);

AssignLocalFile();
}

private async void AssignLocalFile()
{
_mStorageFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(_mName.Replace(" ", "_") + ".log",
CreationCollisionOption.OpenIfExists);
}

private async void WriteToFile(IEnumerable<string> lines)
{
// TODO:
}

protected override void OnEventWritten(EventWrittenEventArgs eventData)
{
// TODO:
}

protected override void OnEventSourceCreated(EventSource eventSource)
{
// TODO:
}
}

我的EventSource 实现是:

internal sealed class Logger : EventSource
{
public static Logger Log = new Logger();

[Event(1, Level = EventLevel.Verbose)]
public void Debug(string message, Exception exception)
{
var exceptionMessage = GenerateExceptionMessage(exception);
WriteEvent(1, message + exceptionMessage);
}

[Event(2, Level = EventLevel.Informational)]
public void Info(string message, Exception exception)
{
var exceptionMessage = GenerateExceptionMessage(exception);
WriteEvent(2, message + exceptionMessage);
}

[Event(3, Level = EventLevel.Warning)]
public void Warn(string message, Exception exception)
{
var exceptionMessage = GenerateExceptionMessage(exception);
WriteEvent(3, message + exceptionMessage);
}

[Event(4, Level = EventLevel.Error)]
public void Error(string message, Exception exception)
{
var exceptionMessage = GenerateExceptionMessage(exception);
WriteEvent(4, message + exceptionMessage);
}

[Event(5, Level = EventLevel.Critical)]
public void Critical(string message, Exception exception)
{
var exceptionMessage = GenerateExceptionMessage(exception);
WriteEvent(5, message + exceptionMessage);
}

private static string GenerateExceptionMessage(Exception exception)
{
return exception != null ? $" Exception message - {exception.Message} :: InnerException - {exception.InnerException} :: StackTrace - {exception.StackTrace}"
: "";
}
}

最后,我像这样初始化和配置我的 EventSource/EventListener 类型:

        EventListener genericListener = new StorageFileEventListener("MyIoTListener");
genericListener.EnableEvents(Logger.Log, EventLevel.Critical);

我是否错过了一个基本步骤?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com