如何使用log4net在Spring.NET中配置日志记录?

如何使用log4net在Spring.NET中配置日志记录?,log4net,spring.net,log4net-configuration,Log4net,Spring.net,Log4net Configuration,我想将Spring.NET方面库日志方面与log4Net一起使用。 我发现了如何将log4Net与常见的日志API一起使用 我的测试应用程序是控制台,基于.NET4.0客户端配置文件 第一次尝试 因此,我在我的项目中引用了以下库: 核心版本1.3.2.40943,运行时版本4.0.30319 Spring.AOP版本1.3.2.40943,运行时版本4.0.30319 日志记录版本:1.2.0.0,运行时版本1.0.3705 上面的程序集来自程序文件\Spring.NET 1.3.2\bin

我想将Spring.NET方面库日志方面与log4Net一起使用。 我发现了如何将log4Net与常见的日志API一起使用

我的测试应用程序是控制台,基于.NET4.0客户端配置文件

第一次尝试 因此,我在我的项目中引用了以下库:

  • 核心版本1.3.2.40943,运行时版本4.0.30319
  • Spring.AOP版本1.3.2.40943,运行时版本4.0.30319
  • 日志记录版本:1.2.0.0,运行时版本1.0.3705
上面的程序集来自程序文件\Spring.NET 1.3.2\bin\NET\4.0

  • log4net版本:1.2.10.0,运行时v2.0.50727
在程序文件\Spring.NET 1.3.2\bin中找不到程序集Common.Logging.Log4Net.dll \net\4.0,因此我下载此程序集:

  • Common.Logging.Log4Net版本2.0.0.0运行时v2.0.50727
我在app.config中配置了记录器:


然后再次测试。我得到了这个错误:

无法创建类型 'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net'

内部异常:

{“无法加载文件或程序集'Common.Logging.Log4Net'或以下文件之一: 它的依赖项。系统找不到该文件 已指定。“:“Common.Logging.Log4Net”}

堆栈跟踪:

位于System.RuntimeTypeHandle.GetTypeByName(字符串名,布尔值 throwOnError、布尔ignoreCase、布尔reflectionOnly、, StackScrawMarkHandle stackMark,Boolean loadTypeFromPartialName, ObjectHandLeon(堆栈类型)位于 System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔值 throwOnError、布尔ignoreCase、布尔reflectionOnly、, stackcrawmark&stackMark,Boolean loadTypeFromPartialName)位于 System.RuntimeType.GetType(字符串typeName,布尔throwOnError, 布尔ignoreCase、布尔反射only、StackCrawlMark和stackMark) 在System.Type.GetType(字符串typeName,Boolean throwOnError,Boolean 不知情者)在 Common.Logging.ConfigurationSectionHandler.ReadConfiguration(XmlNode 第(1)节 c:\CCNet\netcommon\trunk\modules\Common.Logging\src\Common\Common.Logging\Logging\ConfigurationSectionHandler.cs:line 130

第三次也是最后一次尝试 最后,我在spring示例中找到了assembly Common.Logging.Log4Net版本1.2.0.2,因此我使用了它

  • Common.Logging.Log4Net版本1.2.0.2
  • 通用日志记录版本1.2.0.0
  • log4Net 1.2.10.0
测试并再次获取错误:

{“无法配置公用。从配置部分进行日志记录 “通用/日志记录”。“}

内部异常:

{”为创建配置节处理程序时出错 通用/日志记录:无法创建类型 'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net'(E:\C# PROJECTS\STUDY\SPRING.NET\SpringNet.Aspects\LoggingWithLog4Net\bin\Debug\LoggingWithLog4Net.vshost.exe.Config 第18行“}

堆栈跟踪:

{”无法创建类型 'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net''}


我真的很困惑我做了什么坏事?Spring.NET 1.3.2的程序集版本有一些问题?

您应该使用:

  • 通用日志2.0.0
  • Common.Logging.Log4Net 2.0.0
  • log4net 1.2.10
确保将最后两个
log4net
dll复制到输出目录。由于您的代码不直接引用它,因此Visual Studio可能不会复制它们。

此外,它们也不会被复制

<resource uri="config://springs/objects"/>

试一试


在配置文件中,节组名称为“spring”,而不是“springs”。我抄袭了你的,使我的工作,并得到了同样的问题。终于找到了原因


希望有帮助

另一种可能性是:

  • 通用日志2.1.1
  • Common.Logging.Log4Net 2.1.1
  • log4net 1.2.10
我建议跳过Common.Logging 2.1.0,因为它在读取完全有效的app.config节时会引发此异常:

无法将“System.Configuration.DefaultSection”类型的对象强制转换为“System.Configuration.AppSettingsSection”类型


安装2.1.1修复了问题。

工作示例:@Marjin:再次感谢您。您是对的Common.Logging.Log4Net和Log4Net不在bin目录中。。。我在VS中添加了对这些DLL的引用,但VS没有将这些DLL复制到bin目录。您可能对。。。。。。还有一个关于使用Spring.NET AOP进行日志记录的好例子。
<resource uri="config://springs/objects"/>
<resource uri="config://spring/objects"/>