Программно настроить NLog - PullRequest
       12

Программно настроить NLog

0 голосов
/ 06 сентября 2018

у меня есть эти четыре параметра, которые ничего не возвращают в базу данных: Почему это происходит и как это решить?

Это полный код:

https://www.codepile.net/pile/z1lol0Gb

База данных здесь:

https://www.codepile.net/pile/01JgbjXV

Часть моего кода

var dbTarget = new DatabaseTarget ();
dbTarget.ConnectionString = @"data source=.;initial catalog=Database5;user id=App;password=App;";
dbTarget.CommandText =
    @"insert into Logs (Level,CallSite,Type,Message,StackTrace,InnerException,AdditionalInfo) values (
         @level,
         @callSite,
         @type,
         @message,
         @stackTrace,
         @innerException,
         @additionalInfo
         );";
dbTarget.Parameters.Add (new DatabaseParameterInfo ("@level", new NLog.Layouts.SimpleLayout ("${level}")));
dbTarget.Parameters.Add (new DatabaseParameterInfo ("@callSite", new NLog.Layouts.SimpleLayout ("${callsite}")));
dbTarget.Parameters.Add (new DatabaseParameterInfo ("@type", new NLog.Layouts.SimpleLayout ("${exception:format=type}")));
dbTarget.Parameters.Add (new DatabaseParameterInfo ("@message", new NLog.Layouts.SimpleLayout ("${exception:format=message}")));
dbTarget.Parameters.Add (new DatabaseParameterInfo ("@stackTrace", new NLog.Layouts.SimpleLayout ("${${exception:format=stackTrace}}")));
dbTarget.Parameters.Add (new DatabaseParameterInfo ("@innerException", new NLog.Layouts.SimpleLayout ("${exception:format=:innerFormat=ShortType,Message,Method:MaxInnerExceptionLevel=1:InnerExceptionSeparator}")));
dbTarget.Parameters.Add (new DatabaseParameterInfo ("@additionalInfo", new NLog.Layouts.SimpleLayout ("${message}")));

У меня есть та же база данных, которая существует здесь:

https://knightcodes.com/.net/2016/05/25/logging-to-a-database-wth-nlog.html

Вот так они выглядят в базе

enter image description here

База данных должна выглядеть так: enter image description here

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Вам необходимо правильно зарегистрировать свое исключение.

Ваш код показывает:

Logger logger1 = LogManager.GetLogger ("Logger1");
// Log something..
logger1.Error("Test Logger1");

но Exception должен быть первым аргументом, см. Как регистрировать исключения в NLog

Logger logger1 = LogManager.GetLogger ("Logger1");
// Log something..
logger1.Error(new Exception("my error"), "Test Logger1");
0 голосов
/ 06 сентября 2018

Внутреннее исключение может быть пустым, поэтому в вашей БД могут быть пустые значения (но вы должны проверить, сохранится ли оно, если присутствует внутреннее исключение). Что касается других свойств, я не думаю, что кто-то может помочь вам с предоставленным вами образцом. Кажется, проблема заключается в обработке исключений и использовании регистратора. Однако я не могу проверить это с вашим образцом. Здесь - проблема, которая похожа на вашу. Вы также можете прочитать о Layour Renderer и найти ответы на NLog Wiki. Если вы этого еще не сделали, рассмотрите возможность использования файла NLog config , чтобы все, что касается конфигурации, находилось в одном месте.

...