【问题标题】:Serilog Map sink log textSerilog Map sink 日志文本
【发布时间】:2019-12-05 07:08:14
【问题描述】:

我一直在尝试使用来自 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");

但结果是“你好,爱丽丝!”写入 log-Alice.txt 文件。如何在没有“Alice”的情况下只将那条消息写入 log-Alice.txt?

如果我使用

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

“Hello”被写入 log-Other.txt

【问题讨论】:

    标签: .net logging serilog


    【解决方案1】:

    只有在消息模板中使用时才会设置属性“名称”。否则 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.

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

    public class Foo
    {
        private readonly ILogger _logger = Log.ForContext("Name", "Bar");
    
        public void DoThings()
        {
           this._logger.Information("Hello");
           this._logger.Warning("world");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      相关资源
      最近更新 更多