Hello guys,
I would like to read the email configuration from serilog.json but couldn't figure it out.
Here is my main:
class Program
{
static async Task Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File("log-.txt", rollingInterval: RollingInterval.Day)
.WriteTo.Email(new EmailConnectionInfo
{
FromEmail = "test@test.com",
ToEmail = "anon@user ",
MailServer = "smtp.yandex.com.tr",
NetworkCredentials = new NetworkCredential
{
UserName = "abc",
Password = "123"
},
EnableSsl = false,
Port = 587,
EmailSubject = "Shipment Service Error"
}, restrictedToMinimumLevel: LogEventLevel.Error, batchPostingLimit: 1)
.CreateLogger();
var builder = new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
//Serilog
services.AddLogging(loggingBuilder =>
loggingBuilder.AddSerilog(dispose: true));
//Setting up API Client
services.AddHttpClient("ShipmentClient", client =>
{
client.BaseAddress =
new Uri("https://test.com/abc/");
client.DefaultRequestHeaders.Add("Accept", "application/json");
});
services.AddSingleton<IHostedService, BusinessService>();
//Setting up app settings configuration
var config = LoadConfiguration();
services.AddSingleton(config);
});
await builder.RunConsoleAsync();
}
public static IConfiguration LoadConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile(path: "serilog.json", optional: false, reloadOnChange: true);
return builder.Build();
}
}
Here is my serilog.json:
{
"Serilog": {
"LevelSwitches": {
"$consoleSwitch": "Verbose",
"$fileSwitch": "Verbose"
},
"Using": [
"Serilog.Sinks.Console",
"Serilog.Sinks.File"
],
"MinimumLevel": "Verbose",
"WriteTo": [
{
"Name": "Console",
"Args": {
"levelSwitch": "$consoleSwitch"
}
},
{
"Name": "File",
"Args": {
"path": "Logs/log.txt",
"levelSwitch": "$fileSwitch"
}
}
]
}
}