I have two .NET 8 CORE APIS ( API-1 & API-2), and I am trying to get them to log any error to the same file to no avail. Only one API is writting to the error file
Test 1
- Restart IIS
- Genereate error from API-1 -> message is written to error log
- Generate error from API-2 -> no message is being written to error log
- Generate error from API-1 -> message is written to error log.
Test 2
- Restart IIS
- Genereate error from API-2 -> message is written to error log
- Generate error from API-1 -> no message is being written to error log
- Generate error from API-2 -> message is written to error log.
appsettings.json .
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
"System": "Warning"
}
},
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
"WriteTo": [
{ "Name": "Console" },
{
"Name": "File",
"Args": {
"path": "E:/Logs/SerilogAPITester1-.txt",
"rollingInterval": "Day",
"fileSizeLimitBytes": 50000000,
"rollOnFileSizeLimit": true,
"shared": true //so other apps can write here too
//"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}]) {Message} {NewLine} {Exception}"
}
},
{
"Name": "File",
"Args": {
"path": "E:/Logs/Errors-.txt",
"rollingInterval": "Day",
"fileSizeLimitBytes": 50000000,
"rollOnFileSizeLimit": true,
"shared": true, //so other apps can write here too
"restrictedToMinimumLevel": "Error"
//"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}]) {Message} {NewLine} {Exception}"
}
}
]
//"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
//"Properties": {
// "Application": "Tester1",
// "Environment": "Prod"
//}
},
NOTE: The above configuration is for API-1, API-2 will have two changes:
"AppName": "Tester1" --> "Tester2"
"path": "E:/Logs/SerilogAPITester1-.txt" --> "E:/Logs/SerilogAPITester2-.txt"
program.cs
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Configuration).CreateLogger();
If you can see where I went wrong, please shout! Thanks
1