Gle*_*ten 4 windows-services serilog
考虑这个app.config appSetting
条目:
<add key="serilog:write-to:RollingFile.pathFormat"
value="ServerServiceApp-{Date}.log" />
Run Code Online (Sandbox Code Playgroud)
这是在app启动时完成的:
Log.Logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.Enrich.WithThreadId()
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
这是在Windows服务应用程序中.日志文件最终在这里:
C:\Windows\SysWOW64
Run Code Online (Sandbox Code Playgroud)
显然,我们宁愿将日志文件放在同一目录中,该目录包含此服务的.exe(客户不希望我们将内容写入SysWOW64).但是怎么样?
我们需要ReadFrom.AppSettings,以便客户可以根据需要在app.config中提供serilog设置.
在ReadFrom.AppSettings完成后,是否有某种方法可以更改用于日志文件的目录?
如果我们能说出类似的话会很棒:
<add key="serilog:write-to:RollingFile.pathFormat"
value="{ApDomainBaseDirectory}\ServerServiceApp-{Date}.log" />
Run Code Online (Sandbox Code Playgroud)
({Date}在哪里,可以放在文件路径中,记录?)
小智 10
只需将其放在创建 LoggerConfiguration 之前即可:
Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;
Run Code Online (Sandbox Code Playgroud)
然后File.path
会根据项目根路径构建。
写入日志的服务的最佳位置是%PROGRAMDATA%
默认情况下C:\ProgramData\
.
尝试:
<add key="serilog:write-to:RollingFile.pathFormat"
value="%PROGRAMDATA%\ServerService\Logs\log-{Date}.txt" />
Run Code Online (Sandbox Code Playgroud)
(Program Files
通常被认为是只读的,在这里写东西会导致在卸载过程中意外地留下奇怪的东西.)
归档时间: |
|
查看次数: |
4212 次 |
最近记录: |