Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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单独的配置文件不工作_C#_Asp.net Mvc 4_Log4net_Log4net Configuration - Fatal编程技术网

C# Log4Net单独的配置文件不工作

C# Log4Net单独的配置文件不工作,c#,asp.net-mvc-4,log4net,log4net-configuration,C#,Asp.net Mvc 4,Log4net,Log4net Configuration,我有一个奇怪的问题。我在一个解决方案中有多个项目。其中一个是WebAPI,它的日志很好。另一个是MVC管理站点,这个不会登录。这是我试过的 我的日志代码: var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); log.Info("Some log message"); 在assemblyInfo中,我尝试了以下每一项 [assembly:

我有一个奇怪的问题。我在一个解决方案中有多个项目。其中一个是WebAPI,它的日志很好。另一个是MVC管理站点,这个不会登录。这是我试过的

我的日志代码:

var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log.Info("Some log message");  
在assemblyInfo中,我尝试了以下每一项

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "logging.config", Watch = true)]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "C:\\full_path\\logging.config", Watch = true)]  
在Global.asax应用程序_start中,我尝试了以下操作(删除assemblyInfo行)

这也不会创建日志。创建日志的一种方法是使用global.asax中的代码和logging.config的完整路径

我很困惑,因为webapi只处理带有相对路径的assemblyInfo。我还制作了一个带有AssemblyInfo解决方案(相对路径)的MVC项目的示例虚拟解决方案,它也在那个里工作

有什么想法吗

更新-发现问题


我必须在应用程序启动中设置配置文件监视程序:

log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logging.config"));
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logging.config"));
事实证明,DotNetOpenAuth.Core.dll使用log4net,将使使用AssemblyInfo解决方案无法工作。我在这个博客中找到了详细信息:


谢谢

我必须在应用程序启动中设置配置文件监视程序:

log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logging.config"));
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logging.config"));

事实证明,DotNetOpenAuth.Core.dll使用log4net,将使使用AssemblyInfo解决方案无法工作。我在这个博客中找到了详细信息:(看看提到DotNetOpenAuth.Core.dll的段落)

我为这个解决方案奋斗了很多天。我最终发现以下解决方案对我有效>

[程序集:log4net.Config.XmlConfigurator(ConfigFile=“log4net.Config”,Watch=true)]
加上@BCarlson建议的配置

XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config"));
为了总结所有内容,我使用外部log4net.config文件为log4net配置创建了一个示例c#控制台项目。

是否存在权限问题(在IIS下运行并尝试写入文件可能会有问题)?你试过了吗?您是否尝试过在示例应用程序的启动代码中使用完整路径?您的配置是否有根元素,或者它是否与打印出来的
DeclaryingType
匹配?权限问题:我不这么认为,因为在global.asax中运行它可以使用完整路径。调试:在VS2012中,它只是在我登录时无误地执行。Log4Net调试,我无法让它记录任何东西。基于相对/完整路径和全局vs assemblyInfo,同一配置是否有效令人困惑。发现问题。我的MVC项目引用了DotNetOpenAuth.Core.dll。此程序集使用Log4Net,并在执行AssemblyInfo行之前调用。我发现这篇文章提供了详细信息: