Serilog Map接收器日志文本

时间:2019-12-05 07:08:14

标签: .net logging serilog

我一直在尝试使用Github: serilog-sinks-map中的示例来使用Serilog的Map接收器。我可以使用以下命令将其写入日志:

Log.Logger = new LoggerConfiguration()
  .WriteTo.Map("Name", "Other", (name, wt) => wt.File($"./logs/log-{name}.txt"))
  .CreateLogger();
Log.Information("Hello, {Name}!", "Alice");

但是结果是“你好,爱丽丝!”获取写入log-Alice.txt文件的信息。如何仅将没有“ Alice”的消息写到log-Alice.txt?

如果我使用

登录
Log.Information("Hello", "Alice");

“ Hello”被写入log-Other.txt

1 个答案:

答案 0 :(得分:1)

仅在消息模板中使用属性“名称”时才设置。否则,Serilog不知道如何将值“ Alice”映射到属性。

因此,我要设置此属性,必须创建一个上下文,如下所示:

var logger = Log.ForContext("Name", "Alice");
logger.Information("Helping user {User} with question {QuestionId}.", "Janne Rantala", "59190740");

此日志Helping user Janne Rantala with question 59190740.将记录在log-Alice.txt文件中。

因此,如果您想将类Foo中的所有内容记录在文件Bar中。您可以这样创建课程:

public class Foo
{
    private readonly ILogger _logger = Log.ForContext("Name", "Bar");

    public void DoThings()
    {
       this._logger.Information("Hello");
       this._logger.Warning("world");
    }
}