Serilog Map 接收器日志文本
Serilog Map sink log text
我一直在尝试使用来自 Github: serilog-sinks-map 的样本来使用 Serilog 的 Map sink。我可以使用它来写入日志:
Log.Logger = new LoggerConfiguration()
.WriteTo.Map("Name", "Other", (name, wt) => wt.File($"./logs/log-{name}.txt"))
.CreateLogger();
Log.Information("Hello, {Name}!", "Alice");
但结果是 "Hello, Alice!" 被写入 log-Alice.txt 文件。我如何在没有 "Alice" 的情况下只写那条消息到 log-Alice.txt?
如果我使用
登录
Log.Information("Hello", "Alice");
"Hello" 被写入日志-Other.txt
属性 "Name" 仅在消息模板中使用时设置。否则 Serilog 不知道如何将值 "Alice" 映射到 属性.
所以如果你想设置这个 属性 你必须创建一个上下文,就像这样:
var logger = Log.ForContext("Name", "Alice");
logger.Information("Helping user {User} with question {QuestionId}.", "Janne Rantala", "59190740");
这将在文件 log-Alice.txt.
中记录 Helping user Janne Rantala with question 59190740.
因此,如果您想将 class Foo
中的所有内容记录在文件 Bar
中。您可以这样创建 class:
public class Foo
{
private readonly ILogger _logger = Log.ForContext("Name", "Bar");
public void DoThings()
{
this._logger.Information("Hello");
this._logger.Warning("world");
}
}
我一直在尝试使用来自 Github: serilog-sinks-map 的样本来使用 Serilog 的 Map sink。我可以使用它来写入日志:
Log.Logger = new LoggerConfiguration()
.WriteTo.Map("Name", "Other", (name, wt) => wt.File($"./logs/log-{name}.txt"))
.CreateLogger();
Log.Information("Hello, {Name}!", "Alice");
但结果是 "Hello, Alice!" 被写入 log-Alice.txt 文件。我如何在没有 "Alice" 的情况下只写那条消息到 log-Alice.txt?
如果我使用
登录Log.Information("Hello", "Alice");
"Hello" 被写入日志-Other.txt
属性 "Name" 仅在消息模板中使用时设置。否则 Serilog 不知道如何将值 "Alice" 映射到 属性.
所以如果你想设置这个 属性 你必须创建一个上下文,就像这样:
var logger = Log.ForContext("Name", "Alice");
logger.Information("Helping user {User} with question {QuestionId}.", "Janne Rantala", "59190740");
这将在文件 log-Alice.txt.
中记录Helping user Janne Rantala with question 59190740.
因此,如果您想将 class Foo
中的所有内容记录在文件 Bar
中。您可以这样创建 class:
public class Foo
{
private readonly ILogger _logger = Log.ForContext("Name", "Bar");
public void DoThings()
{
this._logger.Information("Hello");
this._logger.Warning("world");
}
}