10

考虑这个 app.configappSetting条目:

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

这是在应用程序启动时完成的:

Log.Logger = new LoggerConfiguration()
    .ReadFrom.AppSettings()
    .Enrich.WithThreadId()
    .CreateLogger();

这是在 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} 在哪里,可以放在文件路径中,记录在案?)

4

2 回答 2

7

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

尝试:

<add key="serilog:write-to:RollingFile.pathFormat"
     value="%PROGRAMDATA%\ServerService\Logs\log-{Date}.txt" />

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

于 2015-06-11T22:06:01.020 回答
5

只需在创建 LoggerConfiguration 之前将其放入:

Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;

然后File.path会根据项目根路径来构建。

于 2021-02-09T16:26:53.910 回答