我有这四个参数,它们不向数据库返回任何内容: 为什么会发生这种情况以及如何解决?
这是完整的代码:
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
这就是他们在数据库中的外观
答案 0 :(得分:0)
内部异常可以为空,因此您的数据库中可以具有空值(但是,如果存在内部异常,则必须验证它是否将保存)。至于其他属性,我认为没有人可以帮助您提供您提供的样品。问题似乎在于异常处理和使用记录器。 但是,我无法通过您的示例进行验证。 Here是一个看起来与您相似的问题。您还可以阅读有关layour renderer的信息,并在NLog Wiki上寻找答案。如果尚未执行此操作,请考虑使用NLog config文件将与配置有关的所有内容都放在一个位置。
答案 1 :(得分:0)
您需要正确记录您的异常。
您的代码显示:
Logger logger1 = LogManager.GetLogger ("Logger1");
// Log something..
logger1.Error("Test Logger1");
但是Exception
应该是第一个参数,请参见How to log exceptions in NLog
Logger logger1 = LogManager.GetLogger ("Logger1");
// Log something..
logger1.Error(new Exception("my error"), "Test Logger1");