Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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
C# Log4Net与AdoNetAppender-什么都没有发生 描述_C#_Logging_Log4net - Fatal编程技术网

C# Log4Net与AdoNetAppender-什么都没有发生 描述

C# Log4Net与AdoNetAppender-什么都没有发生 描述,c#,logging,log4net,C#,Logging,Log4net,我在程序集中有一个配置文件作为资源,希望在应用程序中以编程方式更改ConnectionString 我使用log4net.Config.XmlConfigurator.Configure加载配置 我有一些断点,看到配置成功加载,连接字符串是Data Source=localhost\SQLExpress;初始目录=日志;综合安全=SSPI(本地SQLExpress) 问题 没有发生任何事情,没有异常,也没有日志条目。任何想法 使用(Stream Stream=System.Reflection.

我在程序集中有一个配置文件作为资源,希望在应用程序中以编程方式更改ConnectionString

我使用
log4net.Config.XmlConfigurator.Configure
加载配置

我有一些断点,看到配置成功加载,连接字符串是
Data Source=localhost\SQLExpress;初始目录=日志;综合安全=SSPI(本地SQLExpress)

问题 没有发生任何事情,没有异常,也没有日志条目。任何想法

使用(Stream Stream=System.Reflection.Assembly.getExecutionGassembly().GetManifestResourceStream(“MyNamespace.Properties.log4net.config”))
{ 
//流不为空
log4net.Config.XmlConfigurator.Configure(流);
}
Hierarchy hier=LogManager.GetRepository()作为层次结构;
如果(hier!=null)
{
//让阿多内塔出现
var adoAppender=(AdoNetAppender)hier.GetAppenders().Where(appender=>appender.Name.Equals(“AdoNetAppender”,StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();
如果(ADOAPENDER!=null)
{
//更新连接字符串
adoAppender.ConnectionString=configuration.GetConnectionString(ConnectionString.Log).ConnectionString;
//刷新appender的设置
adoapper.ActivateOptions();
}
}
iloglogger=LogManager.GetLogger(“MyProject”);
记录器。警告(“测试”);
log4net.config文件的内容


您可以通过挂接log4net调试程序来调试log4net:

在app.config文件中添加log4net应用程序设置:


在log4net配置中添加调试附加程序:


将appender添加到log4net配置根目录:


运行应用程序时,查看VisualStudio的输出窗口,您应该会看到log4net的所有内部日志记录。如果不是,则永远不会加载log4net配置文件

编辑

如果您可以使用app.config文件中的连接字符串,请从log4net AdoNetAppender中删除该连接字符串,只需按名称调用该连接字符串:


以下是我尝试过的一些适合我的东西

  • 因为我的


    希望这能节省一些时间和挫折。谢谢

    总的来说,配置文件与程序集并排存在,而不是在其中烘焙,这不是更好吗?毕竟,它在配置文件中(而不是在C#code中定义)的主要原因是,你可以在不重新编译应用程序的情况下对其进行调整。但在我的情况下,我需要一个资源。谢谢,例外是log4net不能用connectionstring“[我们将在运行时自动设置]”连接数据库。没关系,我在代码中更改了connectionstring。还有其他想法吗?请参阅我的编辑,了解如何使用app.config中的按名称列出的连接字符串。如果这不是一个选项,那么请尝试在log4net配置文件中对连接字符串进行编码,以验证连接是否正常工作,如果是,则说明在代码中更新连接字符串的方式有问题;非常好的说明,效果非常好。我已经尝试了其他人提到的所有其他调试步骤,这是唯一一个允许我查看所需内容的步骤:)忘记将我的ID列设置为标识:(这是我早上的lol。谢谢!!debugappender加1你的第二点(缓冲区大小)是我的关键。我的bufferSize是100,因此我在几分钟内没有看到任何输出,并假设它不起作用。谢谢。Buffer size也帮了我。log4net提供的配置文件文档确实缺少…这是的文档。我尝试了所有方法,直到发现缓冲区大小阻止了数据库写入lo是时候了。谢谢你指出这一点