Sql server 2005 Log4net未插入数据库?
我有log4net设置,并配置为插入到SQLServer2005表中。我的桌子叫Log。当我调用log4net方法时,它不会将任何数据输入sql server中的日志数据库。我没有从我的客户c#代码中得到任何错误。我是否需要在sql中向日志表添加用户?现在我正在使用windows身份验证Sql server 2005 Log4net未插入数据库?,sql-server-2005,log4net,Sql Server 2005,Log4net,我有log4net设置,并配置为插入到SQLServer2005表中。我的桌子叫Log。当我调用log4net方法时,它不会将任何数据输入sql server中的日志数据库。我没有从我的客户c#代码中得到任何错误。我是否需要在sql中向日志表添加用户?现在我正在使用windows身份验证 connectionString value=“数据源=V-FIN-SQL-D\SQL2005;初始目录=DevMHAIC;集成安全性=True;连接超时=360”/> 以下是日志数据库的sql代码: CR
connectionString value=“数据源=V-FIN-SQL-D\SQL2005;初始目录=DevMHAIC;集成安全性=True;连接超时=360”/>
以下是日志数据库的sql代码:
CREATE TABLE [dbo].[Log](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Date] [datetime] NULL,
[Thread] [varchar](255) NULL,
[Level] [varchar](50) NULL,
[Logger] [varchar](255) NULL,
[Message] [varchar](4000) NULL,
[Exception] [varchar](2000) NULL
) ON [PRIMARY]
这是我用来调用log4net的类
公共类错误日志:ILog
{
log4net.ILog\u Log;
///
///初始化类的新实例。
///
///日志。
公共错误日志(log4net.ILog日志):this()
{
_Log=Log;
}
///
///初始化类的新实例。
///
公共错误日志()
{
_Log=LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
log4net.Config.XmlConfigurator.Configure();
}
///
///指定消息的信息。
///
///信息。
公共无效信息(字符串消息)
{
_日志信息(消息);
}
///
///指定消息的信息。
///
///信息。
///内部异常。
公共无效信息(字符串消息,异常innerException)
{
_Log.Info(消息,innerException);
}
///
///调试指定的消息。
///
///信息。
公共void调试(字符串消息)
{
_Log.Debug(消息);
}
///
///调试指定的消息。
///
///信息。
///内部异常。
公共void调试(字符串消息,异常innerException)
{
_调试(消息,innerException);
}
///
///在指定的消息中出现错误。
///
///信息。
公共无效错误(字符串消息)
{
_日志错误(消息);
}
///
///在指定的消息中出现错误。
///
///信息。
///内部异常。
公共无效错误(字符串消息,异常innerException)
{
_日志错误(消息,innerException);
}
///
///警告指定的消息。
///
///信息。
公共无效警告(字符串消息)
{
_日志警告(消息);
}
///
///警告指定的消息。
///
///信息。
///内部异常。
公共无效警告(字符串消息,异常innerException)
{
_Log.Warn(消息,innerException);
}
}
这是我的界面:
公共接口ILog
{
///
///指定消息的信息。
///
///信息。
无效信息(字符串消息);
///
///指定消息的信息。
///
///信息。
///内部异常。
无效信息(字符串消息,异常innerException);
///
///调试指定的消息。
///
///信息。
无效调试(字符串消息);
///
///调试指定的消息。
///
///信息。
///内部异常。
无效调试(字符串消息,异常innerException);
///
///在指定的消息中出现错误。
///
///信息。
无效错误(字符串消息);
///
///在指定的消息中出现错误。
///
///信息。
///内部异常。
无效错误(字符串消息,异常innerException);
///
///警告指定的消息。
///
///信息。
无效警告(字符串消息);
///
///警告指定的消息。
///
///信息。
///内部异常。
无效警告(字符串消息,异常innerException);
}
仅通过查看您的配置,我无法真正了解您的问题,但您可以尝试将其添加到应用程序设置中,看看log4net是否可以告诉您出了什么问题:
了解如何捕获log4net的内部日志记录。除非在连接字符串中专门设置了用户,否则log4net将尝试使用分配给进程的任何用户帐户(如果是ASP.NET worker进程)进行日志记录。如果无法记录日志,Log4Net也不会抛出异常。您可以打开调试以查看问题所在。
<bufferSize value="100" />
据说它将在内存中保存100个日志,直到写入数据库。也许这就是为什么你在DB中看不到任何东西?我也有同样的问题。在我的例子中,我必须从插入中删除[Exception]和@Exception的用法
所以,我也不得不改变我的日志记录。我基本上必须创建一个很好的异常转储,并将其传递到消息参数中
我希望这有帮助你能发布你的Log4Net配置文件吗?这是最可能的罪魁祸首。将该缓冲区设置为1,则每次都会写入数据库。事实上,它正在等待100个日志项的累积,然后将它们一批写入数据库。如果没有指定,有人知道这个值的默认值吗?@MikeCole Docs说是500,但为什么你还没有在debugger中检查呢?经过1000次搜索,我终于找到了你。谢谢为了解决这个问题,我尝试了数据库级别的一切可以想象的方法。这个属性完全把我绊倒了。谢谢如何启动调试?@barrypicker