2012-02-29 3 views
1

Хорошо, теперь я знал, как писать пользовательские layoutRenderзначения Pass для NLog пользовательского LayoutRenderer

  1. написать класс MylayoutRender наследует LayoutRenderer, в классе,
  2. переопределение Append метода
  3. зарегистрировать изготовленный на заказ layoutRenderer при запуске

    ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("application", typeof(MyLayoutRenderer));

curently, я прочитал значение от конфигурации

protected override void Append(StringBuilder builder, LogEventInfo logEvent) 
    { 
     var product = CommonMethods.ReadConfig("product"); 
     builder.Append(product); 
    } 

как установить значение динамически?

ответ

3

Этот ответ содержит пример LayoutRenderer, который позволяет вам настроить параметр, который говорит, какое значение конфигурации следует читать.

NLog config file to get configuration setting values from a web.config

Из того, что @DaveHogan отвечал, если вы написали свой собственный LayoutRenderer и назвал его MyLayoutRenderer и хотел войти значение «продукта», вы бы настроить его что-то вроде этого:

${MyLayoutRenderer:product} 

key - атрибут [DefaultParameter], украшающий свойство LayoutRenderer, который указывает, какое свойство следует читать из конфигурации.

Этот question (от меня) показывает пример создания NLog LayoutRenderer, который принимает параметр, а затем использует этот параметр в качестве ключа для поиска. (Тема вопроса - log4net, но я публиковал пример того, что я мог сделать в NLog, и хотел получить ответ, показывающий, как что-то подобное в log4net). Обратите внимание, что пример для NLog 1.1. В NLog 2.0 он будет немного отличаться.

Вы также можете найти this link to the NLog code repository полезно.

+0

выглядит так же, как и я: читайте из файла конфигурации (CommonMethods.ReadConfig ("product");) – prime23

+0

Вы хотите сделать что-то другое? То, как я прочитал вопрос, я подумал, что вы, возможно, захотите настроить LayoutRenderer, чтобы вы могли прочитать любое значение из файла конфигурации. Идея для LayoutRenderer, которая делает это, указав имя значения в качестве параметра LayoutRenderer в файле NLog.config, делает это. Есть ли что-то еще, что вы ищете? Может быть, лучший способ сделать то, что вы хотите. – wageoghe

+0

извините за ответ поздно. то, что я хотел сделать, это установить значение из метода Append, но не дать параметр layoutRender. Но так как мой пользовательский layoutRender (имя приложения) является константой, я просто жестко закодирован в sql-insert в NLog.config. Еще раз спасибо. – prime23

Смежные вопросы