在遵循一些示例和教程之后,我将log4net记录到数据库中。我不清楚几件事。
在log4net页面上的示例中,它在配置区域中列出了以下节点。
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
即使我从异常内登录,此参数似乎也将空字符串传递给数据库。
有人可以澄清应记录什么内容以及何时记录此字段吗?
同样,该示例还将“线程”作为varchar(255)记录到数据库中。我在该字段中得到的是一个整数。我对线程不熟悉。我可以将其存储为int吗?在某些情况下,这最终会变成字符串吗?
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
为了填充异常,您需要使用正确的重载
例如,如果您使用
catch (Exception ex)
{
log.Error("Error saving details" , ex);
...
}
那么数据库的异常列将设置为ex.ToString()
如果您使用
log.Error("Error saving details " + ex.ToString());
然后没有填充异常
至于线程标识符,它应该是您数据库中的一个字符串。默认线程ID是整数,但是您可以显式命名该线程,
例如
var ts = new System.Threading.ThreadStart(InitialiseDatabase);
var thread = new System.Threading.Thread(ts);
thread.Name = "Initialising Database";
命名您的线程是一个好主意,因为它使过滤/识别变得更加容易。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句