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

WPF应用App.config中%DOCUMENTS%环境变量失效,求Serilog日志路径配置

WPF用Serilog写日志的路径问题解答

问题情况

我做了个WPF应用,想用Serilog把日志写到本地TXT里,已经装了Serilog、Serilog.Sinks.File和Serilog.Settings.AppSettings这几个包。结果启动关闭工具后找不到日志文件,怀疑是环境变量路径设错了。

一开始在App.xaml.cs的构造函数里写了这段代码:

Log.Logger=new LoggerConfiguration().ReadFrom.AppSettings().CreateLogger();
Log.Information("##########################################################");
Log.Information("############## Tool started...###############");
Log.Information("##########################################################");

App.config里的配置是这样的:

<appSettings>
  <add key="serilog:minimum-level" value="Verbose" />
  <add key="serilog:using:File" value="Serilog.Sinks.File" />
  <add key="serilog:write-to:File.path" value="%DOCUMENTS%\Logs\Tool-.txt" />
  <add key="serilog:write-to:File.rollingInterval" value="Day" />
  <add key="serilog:write-to:File.retainedFileCountLimit" value="10" />
</appSettings>

后来把路径改成%USERPROFILE%\Documents\ESI_Effort_A350\Logs\ESIA350-.txt就生效了,但想知道有没有直接指向Documents文件夹的环境变量。

相关说明

  1. 为啥%DOCUMENTS%不行?
    Windows系统里根本没有%DOCUMENTS%这个标准系统环境变量,Serilog的文件接收器识别不了这个非标准变量,自然解析不对路径,日志文件就生成不了。

  2. 能直接指向Documents的标准环境变量

    • %USERPROFILE%\Documents:这是所有Windows系统都支持的标准写法,也是你已经验证能用的,靠谱得很。
    • %PUBLIC%\Documents:如果要写公共文档文件夹(所有用户都能看到),可以用这个变量。
    • %LOCALAPPDATA%\Documents:有些系统里有这个变量,指向当前用户的本地文档目录,不过兼容性不如上面那个。
  3. 另一种靠谱写法:代码里直接拿路径
    要是不想依赖环境变量,也可以直接在代码里用.NET的API获取Documents路径,再配置Serilog,这样完全不会有解析问题:

    var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    var logPath = Path.Combine(documentsPath, "Logs", "Tool-.txt");
    
    Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Verbose()
        .WriteTo.File(logPath, rollingInterval: RollingInterval.Day, retainedFileCountLimit: 10)
        .CreateLogger();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:07:23