Я пытаюсь добавить некоторые пользовательские поля в NLog, используя extensibility .
Часть моего nlog.config
файла выглядит так: (упрощенно для выставки)
<nlog>
<extensions>
<add assembly="Logzio.DotNet.NLog"/>
</extensions>
<variable name="currentUser" value="test" />
<targets async="true">
<target name="logzio" type="Logzio" token="myToken">
<contextproperty name="currentUser" layout="${currentUser}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="logzio" />
</rules>
</nlog>
В каждом контроллере у меня есть что-то подобное (я использую ASP.NET MVC5)
private static Logger logger = LogManager.GetCurrentClassLogger();
Затем я отправляю свои журналы в logzio, используя
logger.Fatal("Something bad happens");
Прямо сейчас,currentUser
всегда имеет значение test
, что логично.
Однако, несмотря на документацию , я не понимаю, как динамически изменять значение currentUser
по идентификатору моего текущего зарегистрированного пользователя.
Должен ли я создать своего рода фабрику?(если да, то как? Я не в ладах с фабриками)
Должен ли я изменить переменную logger
?Если да, то как?
Кусок кода будет крайне желателен.
Спасибо, что указали мне, где я ошибаюсь
РЕДАКТИРОВАТЬ
После ответа @ Рольфа я создал этот пользовательский рендерер макетов
[LayoutRenderer("custom-layout")]
public class CustomLayoutRenderer : LayoutRenderer
{
public string IdUser { get; set; }
protected override void Append(StringBuilder builder, LogEventInfo logEvent)
{
logEvent.Properties.Add("currentUser", "HowToPassCustomDataHere?");
builder.Append("test from custom-layout");
}
}
и соответственно изменил nlog.config, добавив
layout="${message} ${custom-layout}"
к своему <target>
Однако я все еще не понимаю, как передать пользовательское значение в currentUser
.В logz.io у меня есть "HowToPassCustomDataHere?"в качестве значения currentUser
.
(Кстати, ${aspnet-user-identity}
отлично и отлично работает; однако я хотел бы понять, как передать пользовательское значение для моего средства визуализации макета. В моем случае, что-то вроде${aspnet-user-id}
) * * тысяча пятьдесят-один