How to config `Serilog` to write to the application directory with the cofig file?
Solution 1
Configuring path like Logs/log.txt
will write log files under logs
folder in working directory
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "Logs/log.txt"
}
}
Also you can check this answer for another option
Solution 2
You can add a "RollingFile" wich can write to a local path file. In this example I'm writing in a File inside of the root of my project as it shows bellow.
{
"Name": "RollingFile",
"Args": {
"pathFormat": ".\\Logs\\logs.txt",
"fileSizeLimitBytes": 1048576
}
},
Also the full json on appsettings.json end up like this (in case you need a full example)
...
"Serilog": {
"MinimumLevel": {
"Default": "Debug",
"Override": {
"System": "Debug",
"Microsoft": "Debug"
}
},
"WriteTo": [
{
"Name": "ApplicationInsightsEvents",
"Args": {
"instrumentationKey": "xxxxxxxxxx"
}
},
{
"Name": "RollingFile",
"Args": {
"pathFormat": ".\\Logs\\logs.txt",
"fileSizeLimitBytes": 1048576
}
},
{ "Name": "Console" },
{
"Name": "EventLog",
"Args": {
"source": "API NAME",
"logName": "CustomLog",
"restrictedToMinimumLevel": "Warning"
}
}
],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"Properties": {
"Application": "API NAME"
}
}
...
mosakashaka
Updated on July 20, 2022Comments
-
mosakashaka almost 2 years
I'm using
Serilog
on a.net core
. I want to config the log path to the application directory.I see there's an extension https://github.com/serilog/serilog-settings-configuration that enable
Serilog
to read fromConfiguration
. In the example , the path is configured as"%TEMP%\\Logs\\serilog-configuration-sample.txt"
. How can I set it to the working directory?I've searched on so, and know that it can be done by code, but it seems there's no one asking how to do this by the config file, i.e.
appsettings.json
.Current configuration:
{ "Serilog": { "Using": [ "Serilog.Sinks.File" ], "MinimumLevel": { "Default": "Debug", "Override": { "Microsoft": "Warning", "System": "Warning" } }, "WriteTo": [ { "Name": "File", "Args": { "path": "Logs\\serilog-configuration-sample.txt" } } ], "Enrich": [ "FromLogContext", "WithMachineName" ], "Destructure": [ ], "Properties": { } }, "AllowedHosts": "*" }
I want the log path to be set to the working directory. But currently it's in "C:\Program Files\IIS Express".
-
mosakashaka about 5 yearsadd a dot sign before the path seems to have no effect.... the log is still writing to IIS directory when I debug it in the visual studio...
-
mosakashaka about 5 yearsThe approach in this answer seems have no effect.... But the link you provided, which use the environment variable works for me.
-
ElasticCode about 5 years@mosakashaka can I know which version of .Net Core you are using?