You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WinUI3应用中向Windows事件查看器写入日志?

WinUI3 向Windows事件查看器写入日志的解决方案

一、EventSource创建失败的原因

WinUI3基于.NET 5+及以上版本,System.Diagnostics.EventLog创建EventSource需要管理员权限,而WinUI3默认启动流程没有管理员权限;另外如果是MSIX打包的WinUI3应用,系统托管的安装流程不支持自动执行创建EventSource的自定义操作,这就是你遇到创建失败的核心原因。

二、继续使用传统Application日志的实现步骤

1. 提前创建EventSource

创建EventSource必须在管理员权限下完成,有几种方式:

  • 非打包应用:保留你原来的WiX安装脚本逻辑,WiX安装时以管理员权限运行,能正常创建EventSource;或者写一个简单的控制台工具,用管理员权限运行执行EventLog.CreateEventSource("你的源名称", "Application")。
  • MSIX打包应用:无法在安装时自动创建,可在应用第一次启动时提示用户以管理员权限运行一次(仅需一次)来创建,或者提前用管理员工具手动创建。

2. WinUI3中的日志写入代码

和.NET Framework的写法基本一致,但要先检查EventSource是否存在,避免权限异常:

using System.Diagnostics;

public void WriteToEventLog(string logContent, EventLogEntryType logType)
{
    string eventSourceName = "你的自定义源名称";
    // 先检查源是否存在,不存在则跳过(避免无权限报错)
    if (!EventLog.SourceExists(eventSourceName))
    {
        // 这里可以给用户弹窗提示:需要管理员权限创建日志源,请手动运行创建工具
        return;
    }

    using (var eventLog = new EventLog("Application"))
    {
        eventLog.Source = eventSourceName;
        eventLog.WriteEntry(logContent, logType);
    }
}

三、更适配WinUI3的ETW日志方案(无需额外工具)

你提到的LoggingSession和LoggingChannel属于ETW(Windows事件跟踪),其实不需要额外下载工具,Windows自带的事件查看器就能查看:

1. 代码实现

using Windows.Foundation.Diagnostics;

// 在窗口初始化时创建LoggingChannel
private LoggingChannel _appLoggingChannel;

public MainWindow()
{
    this.InitializeComponent();
    // 自定义提供商名称和唯一GUID(可以自己生成一个)
    _appLoggingChannel = new LoggingChannel(
        "MyWinUI3AppLogs", 
        null, 
        new Guid("12345678-1234-1234-1234-1234567890AB"));
}

// 写入日志的方法
public void WriteEtwLog(string message, LoggingLevel level)
{
    _appLoggingChannel.LogMessage(message, level);
}

2. 在事件查看器中查看日志

  • 打开事件查看器,点击顶部菜单的「查看」,勾选「显示分析和调试日志」;
  • 展开「应用程序和服务日志」→「Microsoft」→「Windows」→「LoggingChannel」(或者你自定义的提供商名称);
  • 就能看到你写入的日志,完全用系统自带工具查看,无需额外安装。

总结

  • 要沿用传统Application日志,核心是提前在管理员权限下创建EventSource,之后WinUI3的写入逻辑和.NET Framework一致;
  • 优先推荐ETW方案,更适配现代Windows应用,权限要求更低,且系统自带工具就能查看日志。

内容的提问来源于stack exchange,提问作者c3rebro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 23:47:43