Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 Log4net未插入数据库?_Sql Server 2005_Log4net - Fatal编程技术网

Sql server 2005 Log4net未插入数据库?

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

我有log4net设置,并配置为插入到SQLServer2005表中。我的桌子叫Log。当我调用log4net方法时,它不会将任何数据输入sql server中的日志数据库。我没有从我的客户c#代码中得到任何错误。我是否需要在sql中向日志表添加用户?现在我正在使用windows身份验证


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