Serilog опаздывает на вечеринку, но предлагает некоторые интересные варианты. Это похоже на использование классических текстовых регистраторов:
Log.Information("Hello, {0}", username);
Но, в отличие от более ранних фреймворков, при написании текста он только выводит сообщение и аргументы в строку, например в файл или консоль.
Идея состоит в том, что если вы используете хранилище данных в стиле 'NoSQL' для журналов, вы можете записывать такие события, как:
{
Timestamp: "2014-02-....",
Message: "Hello, nblumhardt",
Properties:
{
"0": "nblumhardt"
}
}
Синтаксис строки формата .NET расширен, поэтому вы можете написать приведенный выше пример как:
Log.Information("Hello, {Name}", username);
В этом случае свойство будет называться Name
(а не 0
), что упрощает запросы и корреляцию.
Уже есть несколько хороших вариантов хранения. MongoDB и Azure Table Storage, кажется, очень популярны для DIY. Изначально я создал Serilog (хотя это проект сообщества) и сейчас работаю над продуктом под названием Seq , который обеспечивает хранение и запросы таких структурированных событий журнала.