You need to enable JavaScript to run this app. ASP.NET Owin(.NET Framework4.8)项目中Serilog无法创建日志文件求助
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Owin(.NET Framework4.8)项目中Serilog无法创建日志文件求助

问题解决建议
  • 修正日志文件路径写法
    ASP.NET Framework运行时的默认工作目录为IIS/IIS Express的运行目录,直接写相对路径log.txt无法定位到你预期的项目站点目录,也大概率没有写入权限。需要使用ASP.NET提供的站点路径映射方法获取绝对路径,引入System.Web命名空间后修改配置代码:
.WriteTo.File(System.Web.Hosting.HostingEnvironment.MapPath("~/log.txt"))

其中~/代表站点根目录,生成的日志文件会放在你站点的根路径下。

  • 调整日志实例销毁逻辑
    你当前在日志初始化方法写完测试日志后直接调用了Log.CloseAndFlush(),会直接销毁全局日志实例,不仅后续业务代码无法再写入日志,也可能出现日志还没完成写入就被强制销毁的问题。
    需要把Log.CloseAndFlush()移动到Global.asax的Application_End事件中,仅在应用程序关闭时才销毁日志实例:
// Global.asax.cs
protected void Application_End(object sender, EventArgs e)
{
    Log.CloseAndFlush();
}
  • 配置目录写入权限
    站点运行身份(本地调试时为当前Windows用户,服务器部署时为IIS应用程序池对应的身份,默认为IIS_IUSRS)需要拥有日志存放目录的写入、修改权限,右键点击站点根目录,在安全选项卡中给对应身份添加对应权限即可。

  • 开启有效的Serilog自诊断日志
    你代码中的自诊断日志配置是注释状态,且ASP.NET Framework下Console.WriteLine的输出不会显示在调试窗口,修改自诊断配置输出到VS调试窗口即可排查内部报错:

Serilog.Debugging.SelfLog.Enable(msg => System.Diagnostics.Debug.WriteLine(msg));
  • 检查包版本兼容性
    确认你安装的Serilog.Sinks.File版本兼容.NET Framework 4.8,优先选择5.x及以下的稳定版本,过高的版本可能仅支持.NET Core/.NET 5+,在Framework环境下会出现无报错但不工作的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 21:24:02