[英]How does one set JsonSerializerOptions.DefaultIgnoreCondition for Serilog.Sinks.Seq
[英]How to set dynamic EmailSubject in Serilog.Sinks.Email
我在我的 Net 5 項目中使用 serilog,我想在發送 email 之前在代碼中動態設置主題。 我從 2.2.0 版中讀到這應該是可能的,但我找不到任何如何執行此操作的示例。
這是我的 serilog 設置
Log.Logger = new LoggerConfiguration()
.WriteTo.File(path + "TTLog_" + time + ".txt")
.WriteTo.Console(theme: SystemConsoleTheme.Literate)
.WriteTo.Email(new EmailConnectionInfo {
FromEmail = FromEmail,
ToEmail = ToEmail,
MailServer = SMTP_Server,
NetworkCredentials = new NetworkCredential {
UserName = SMTP_Username,
Password = SMTP_Password
},
EnableSsl = false,
Port = SMTP_Port,
EmailSubject = "Test Subject",
},
outputTemplate: "[{Level:u4}] {Message}{NewLine}{Exception}{Timestamp}"
).CreateLogger();
在我的代碼中,我想在設置 LoggerConfiguration 后更新EmailSubject 。 我怎樣才能做到這一點?
根據評論中的要求更新:
Log.Logger = new LoggerConfiguration()
.WriteTo.File(path + "TTLog_" + time + ".txt")
.WriteTo.Console(theme: SystemConsoleTheme.Literate)
.WriteTo.Email(new EmailConnectionInfo {
FromEmail = FromEmail,
ToEmail = ToEmail,
MailServer = SMTP_Server,
NetworkCredentials = new NetworkCredential {
UserName = SMTP_Username,
Password = SMTP_Password
},
EnableSsl = false,
Port = SMTP_Port,
EmailSubject = "{Msg}"
},
outputTemplate: "[{Level:u4}] {Message}{NewLine}{Exception}{Timestamp}"
).Enrich.FromLogContext()
.CreateLogger();
那么如果我使用它它就可以工作,email 主題是“TT Log - Updated A”
string x = "A";
Serilog.Context.LogContext.PushProperty("Msg", "TT Log - Updated " + x);
但是如果我這樣做是行不通的,郵件主題是空的
string x = "A";
Log.Information("Test");
Serilog.Context.LogContext.PushProperty("Msg", "TT Log - Updated " + x);
如何從代碼中的任何位置動態設置 email 主題?
也許你可以試試serilog-sinks-map
示例代碼使用.Net 6
// Program.cs
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.Map("Msg", "default msg", (msg, wt) => wt.Email(new EmailConnectionInfo()
{
MailServer = "smtp.gmail.com",
Port = 465,
EnableSsl = true,
NetworkCredentials = new NetworkCredential("xxx.com", "xxxxx"),
EmailSubject = msg,
FromEmail = "xxx@gmail.com",
ToEmail = "xxx@gmail.com",
}))
.CreateLogger();
然后,可以使用static方法Log進行測試。
Log.Fatal("Host terminated unexpectedly");
Log.Fatal("Host terminated unexpectedly {Msg}", "Test Subject");
Log.Fatal("Host terminated unexpectedly {Msg}", "Test2 Subject");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.