Как применить теги Serilog к перечислению - PullRequest
0 голосов
/ 29 мая 2018

Я заменяю наш log4net logger на структурированные логи, используя Serilog.Я хочу применить тегирование в коде с помощью Enum, но у меня возникают некоторые трудности с этим.

Пока мой журнал выглядит так:

logger.ErrorFormat("Proxy Logic for the Item {Item} failed. Swallow exception", Item); 

Когда ErrorFormat signutare

void ErrorFormat(string format, params object[] args);

, но я не знаю, как заменить Item на что-то вроде LogTags.TagA.Когда TagA - это Enum, который даст мне возможность применять единый стандарт для моих тегов.

, поэтому это будет выглядеть так:

public enum LogTags
{
TagA,
...
}
public class Foo
{
     public void DoError()
     {
     logger.ErrorFormat("Proxy Logic for the Item {@LogTags.TagA} failed. Swallow exception", Item);
     }
}     

Какова наилучшая практика для достижения такой цели??

1 Ответ

0 голосов
/ 30 мая 2018

Имена свойств в Serilog должны быть простыми, не пунктирными идентификаторами, поэтому имя, такое как Enum.LogTags.Item, не будет работать напрямую.

Вы можете форсировать это вложение с помощью шаблона, приведенного ниже, еслипростое имя неадекватно:

logger.ErrorFormat(
  "Proxy Logic for the Item {@Enum} failed. Swallow exception",
  new { LogTags = new { Item }});
...