Windows-Service中的Serilog不写入日志文件

Gop*_*ope 17 windows-services topshelf serilog

我在TopShelf服务中使用Serilog,登录到控制台和滚动文件.在控制台中运行服务时,我的消息将写入日志文件,但是当我安装服务并运行它时,不会发生日志记录.我需要配置什么特别的东西吗?该文件将写入".\ logs\log- {date} .txt"下的二进制文件夹.

最好的问候Gope

Mik*_*ike 24

我有一个非常相似的问题.就我而言,问题在于相对路径.我只需要指定绝对路径.现在它就像一个魅力.

WriteTo.RollingFile(AppDomain.CurrentDomain.BaseDirectory + "\\logs\\log-{Date}.log")
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!

  • 在`<appSettings>`配置中,您还可以在路径中使用环境变量,例如`%TEMP%` - 将日志放在`%APPDATA%`或类似内容下可以正常工作. (2认同)

Jaf*_*fin 10

我们遇到了同样的问题,这是我们发现的:

  • Serilog配置为滚动日志文件并写入Seq
  • 可启用日志已启用.

症状 - 没有创建日志文件 - 没有日志写入Seq.

按@ gdoten的评论,我们的日志文件写入到\ WINDOWS\SysWow64资料(服务正在运行作为本地服务).
我们认为这些文件的权限可能不允许读取持久的假脱机文件,导致没有日志写入Seq.

修复是硬编码rollinglogfile和缓冲区的路径.


小智 7

 loggerFactory.AddFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log-{Date}.txt"));
Run Code Online (Sandbox Code Playgroud)

尝试这个,它在我的ASP.NET核心2应用程序运行作为Windows服务


Nic*_*rdt 5

运行服务的帐户很可能缺乏写入日志文件位置的权限。尝试将日志文件位置更改为系统的临时文件夹,看看是否是这种情况。

如果仍然失败,那么使用 SerilogSelfLog来获取异常信息是最好的选择。

  • 我发现当我的服务在这里登录时: `&lt;add key="serilog:write-to:RollingFile.pathFormat" value="ServerServiceApp-{Date}.log" /&gt;` 它最终位于 `C:\Windows\ SysWOW64`,这显然是服务首次启动时的当前目录。供参考。 (5认同)