如何使用log4net在Spring.NET中配置日志记录?
我想将Spring.NET方面库日志方面与log4Net一起使用。 我发现了如何将log4Net与常见的日志API一起使用 我的测试应用程序是控制台,基于.NET4.0客户端配置文件 第一次尝试 因此,我在我的项目中引用了以下库:如何使用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
- 核心版本1.3.2.40943,运行时版本4.0.30319
- Spring.AOP版本1.3.2.40943,运行时版本4.0.30319
- 日志记录版本:1.2.0.0,运行时版本1.0.3705
- log4net版本:1.2.10.0,运行时v2.0.50727
- Common.Logging.Log4Net版本2.0.0.0运行时v2.0.50727
然后再次测试。我得到了这个错误:
无法创建类型
'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"/>