按照一些示例和教程后,我将log4net登录到我的数据库。有些事情我不清楚。
在the log4net page上的示例中,它列出了配置区域中的以下节点。
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
即使我在异常中登录,此参数似乎也会将空字符串传递给数据库。
有人可以澄清应该记录到这个字段的内容以及何时?
此外,该示例还将'thread'作为varchar(255)记录到数据库中。我在该领域获得的是一个整数。我不熟悉线程。我可以将它存储为int吗?在某些情况下,这最终会成为一个字符串吗?
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
答案 0 :(得分:1)
为了填充异常,您需要使用正确的重载
例如,如果您使用
catch (Exception ex)
{
log.Error("Error saving details" , ex);
...
}
然后数据库的exception列将设置为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";
为线程命名是个好主意,因为它可以更轻松地过滤/识别。