NLog получить сообщение в журнале C # - PullRequest
0 голосов
/ 18 октября 2018

Я недавно начал использовать NLog, и я хотел бы отобразить журнал в своем приложении, прежде чем он будет сохранен в файл.

Как я могу получить следующее?

string message = logger.getLog() <---- This is what I need

Ответы [ 4 ]

0 голосов
/ 18 октября 2018

В этом случае лучше всего (ИМО) использовать целевую память. (целевой объем памяти документов)

config:

<targets>  
    <target name="target1" xsi:type="Memory" layout="${message}"/>  
    <target name="target2" xsi:type="File" fileName="C:\log\NLog.log" layout="${longdate}|${message}"/>  
</targets>  

<rules>  
  <logger name="*" minlevel="Error" writeTo="target1,target2" />  
</rules> 

сообщение журнала:

 LogManager.GetLogger("logger1").Info("my log message");

извлечение: (см. Также: MemoryTargetкласс - API документы )

var target = LogManager.Configuration.FindTargetByName<MemoryTarget>("target1");
IList<string> logs = target.Logs; 
// show logs etc.
// delete if not needed any more: target.Logs.Clear()
0 голосов
/ 18 октября 2018

Вы можете написать обертку вокруг регистратора NLog.Поэтому вы вызываете DavidsLogger.Log (ошибка), и этот метод сохраняет сообщение журнала в памяти, где вы можете получить к нему доступ, а затем вызывает обычный метод в NLog для постоянного сохранения сообщения в журнале.

0 голосов
/ 18 октября 2018

Вы можете создать targets и rules в Nlog.Config, как показано ниже:

<targets>  
    <target name="console" xsitype="Console" layout="${longdate}|${message}"/>  
     <target name="file" xsitype="File" fileName="C:\log\NLog.log" layout="${longdate}|${message}"/>  
</targets>  

<rules>  
  <logger name="*" minlevel="Error" writeTo="console,file" />  
</rules>  

Это запишет журнал в консоль и файл.Вы также можете отправить журнал на электронную почту.Эта ссылка может дать вам общее представление о NLog здесь:

https://www.c -sharpcorner.com / article / basic-понимание-of-nlog /

и здесь: https://github.com/nlog/NLog/wiki/Configuration-file

Ниже приведены «приоритеты» уровней (скопировано с вышеуказанной ссылки):

Пример уровня

  • Фатально Наивысший уровень: важные вещи вниз
  • Ошибка Например, сбой / исключение приложения.
  • Предупредить Неправильное поведение, но приложение может продолжаться
  • Информация Нормальное поведение, такое как отправка почты, обновление профиля пользователя и т. Д.
  • Отладка выполненных запросов, аутентификация пользователя, истек срок сеанса
  • Метод начала трассировки X, метод завершения X и т. Д.
0 голосов
/ 18 октября 2018

Вам необходимо добавить правильную цель для вызова Nlog.

Например, цель MethodCall

https://github.com/NLog/NLog/wiki/MethodCall-target

Nlog также предоставит вам некоторую вспомогательную цель для Web иWinForm, если то, что вам нужно.https://www.nuget.org/packages/NLog.Web/

https://www.nuget.org/packages/NLog.Windows.Forms/

...