我在TopShelf服务中使用Serilog,登录到控制台和滚动文件。在控制台中运行服务时,我的消息将写入日志文件,但是当我安装服务并运行它时,不会发生日志记录。我需要配置什么特别的东西吗?该文件将写入“。\ logs \ log- {date} .txt”下的二进制文件夹。
最好的问候Gope
我有一个非常相似的问题。就我而言,问题在于相对路径。我只需要指定绝对路径。现在它就像一个魅力。
WriteTo.RollingFile(AppDomain.CurrentDomain.BaseDirectory + "\\logs\\log-{Date}.log")
希望能帮助到你!
我们遇到了同样的问题,这是我们发现的:
症状 - 没有创建日志文件 - 没有日志写入Seq。
根据@ gdoten的评论,我们的日志文件被写入\ windows \ syswow64(服务作为localservice运行)。 我们认为这些文件的权限可能不允许读取持久的假脱机文件,导致没有日志写入Seq。
修复是硬编码rollinglogfile和缓冲区的路径。
loggerFactory.AddFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log-{Date}.txt"));
尝试这个,它在我的ASP.NET核心2应用程序运行作为Windows服务
运行服务的帐户很可能缺少写入日志文件位置的权限。尝试将日志文件位置更改为系统的临时文件夹,以查看是否是这种情况。
如果仍然失败,使用Serilog的SelfLog
获取异常信息是最好的选择。
我作为Windows服务运行,这是我的json文件。
{
"Serilog": {
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "RollingFile",
"Args": {
"pathFormat": "C:\\Program Files\\mycomp\\myapp\\logs\\log-{Date}.txt"
}
}
],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId", "WithEnvironmentUserName", "WithProcessId" ],
"Properties": {
"Application": "MyApp",
"Environment": "Development"
}
} }
-Gina
我有一个类似的问题,它最终因为以下代码,
public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
代码指定appsettings.json文件,并且在该文件中它具有serilog的配置设置,但是当在服务中运行时,当前文件夹不指向可执行文件文件夹。所以它找不到文件appsettings.json,然后当然serilog不会按预期工作。
只需要更改代码,如下所示将使其工作
public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(AppDomain.CurrentDomain.BaseDirectory + "\\appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();