Windows services 指定Serilog滚动文件路径的目录

Windows services 指定Serilog滚动文件路径的目录,windows-services,serilog,Windows Services,Serilog,考虑以下app.configappSetting条目: <add key="serilog:write-to:RollingFile.pathFormat" value="ServerServiceApp-{Date}.log" /> 这在Windows服务应用程序中。日志文件在此处结束: C:\Windows\SysWOW64 显然,我们希望日志文件最终位于存放此服务的.exe的同一目录中(客户不希望我们将内容写入SysWOW64)。但是怎么做呢 我们需要其中的ReadFro

考虑以下app.config
appSetting
条目:

<add key="serilog:write-to:RollingFile.pathFormat"
 value="ServerServiceApp-{Date}.log" />
这在Windows服务应用程序中。日志文件在此处结束:

C:\Windows\SysWOW64
显然,我们希望日志文件最终位于存放此服务的.exe的同一目录中(客户不希望我们将内容写入SysWOW64)。但是怎么做呢

我们需要其中的ReadFrom.AppSettings,以便客户可以根据需要在app.config中提供serilog设置

在ReadFrom.AppSettings完成后,是否有方法更改日志文件使用的目录

如果我们可以这样说,那就太棒了:

<add key="serilog:write-to:RollingFile.pathFormat"
 value="{ApDomainBaseDirectory}\ServerServiceApp-{Date}.log" />


(可以放在文件路径中的{Date}在哪里记录?

服务写入日志的最佳位置是
%PROGRAMDATA%
,默认情况下,它位于
C:\PROGRAMDATA\

尝试:



程序文件
通常被认为是只读的,在这里写东西会导致在卸载过程中意外地留下一些奇怪的东西。)

只需在创建LoggerConfiguration之前放置这些文件:

Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;

然后将基于项目根路径构建
File.path

这个想法将非常有效。没有意识到环境变量可以放在路径字符串中。如果我希望在部署目录(=运行时目录)的子文件夹中查找日志文件,该怎么办?
<add key="serilog:write-to:RollingFile.pathFormat"
     value="%PROGRAMDATA%\ServerService\Logs\log-{Date}.txt" />
Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;