使用Common.Logging与log4net的组件版本兼容问题

近期使用了Common.Logging的ILog接口做日志接口,同时利用其log4net适配器与log4net记录器来记录系统日志,在使用过程中碰到了log4net版本问题。

项目组件管理中安装组件包:

PM> Install-Package Common.Logging

PM> Install-Package Common.Logging.Log4Net  【2.0.1版本;依赖Common.Logging
(≥ 2.0.0); log4net (= 1.2.10)】

项目中将引用log4net.dll版本为 1.2.10.0,在此配套版本情况下,运行出现错误:
{"Unable to create type
‘Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,
Common.Logging.Log4Net‘"}

也将log4net组件升级到最新版本1.2.13失败,Install-Package : 将“log4net 1.2.10”更新到“log4net
2.0.3”失败。找不到与“log4net 2.0.3”兼容的“Common.Logging.Log4Net”版本。

将Common.Logging.Log4Net版本删除,重新安装以下版本

PM> Install-Package Common.Logging.Log4Net1211 
【2.2.0版本;Common.Logging (≥ 2.0.0);Log4Net (≥ 1.2.11)】

项目中log4net.dll版本为 1.2.11.0, 运行OK,升级log4net1.2.13版本,升级成功,运行OK;

注意配置文件中程序集文件名差异

  <common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1211">

版本重定向

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.2.0.0" newVersion="2.2.0.0" />
</dependentAssembly>

<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.13.0" newVersion="1.2.13.0" />
</dependentAssembly>
</assemblyBinding>


原因主要是由于log4net version 1.2.11与1.2.10的publicKeyToken不同所致。可利用VS工具SN –T
组件文件名.dll查看公钥。

log4net (≥ 1.2.11)  公钥标记为 669e0ddf0bb1aa2a

log4net (= 1.2.10)  公钥标记为 1b44e1d426115821

http://www.nuget.org/packages/Log4Net/

http://www.nuget.org/packages/Common.Logging/

http://www.nuget.org/packages/Common.Logging.Log4Net1211/

http://www.nuget.org/packages/Common.Logging.Log4Net/

http://developer.3l.nl/post/16463925249/log4net-1-2-11-dependency-hell

时间: 2024-10-20 01:37:17

使用Common.Logging与log4net的组件版本兼容问题的相关文章

Net dll组件版本兼容问题

dll组件版本兼容问题,是生产开发中经常遇到的问题,常见组件兼容问题如:Newtonsoft.Json,log4net等 为了节约大家时间,想直接看解决方法的,可直接点击目录3.4 目录 1.版本兼容问题的原因 2.解决版本兼容前提 3.指定特定版本bindingRedirect** 4.指定某文件夹中的特定版本codeBase** 版本兼容问题的原因 首先让我们简单了解下程序引用的原理: 当运行库试图解析对另一个程序集的引用时,就开始进行定位并绑定到程序集的进程.详细见:运行库如何定位程序集

Common.Logging log4net Common.Logging.Log4Net 配置

1.log4net 单独配置 log4net支持多种格式的日志输出,我这里只配置输出到本地的txt文件这种格式. <log4net> <root> <appender-ref ref="RollingFileAppender" /> </root> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppende

使用Common.Logging+log4net规范日志管理

Common.Logging+(log4net/NLog/) common logging是一个通用日志接口,log4net是一个强大的具体实现,也可以用其它不同的实现,如EntLib的日志.NLog等. Common.Logging可以通过修改配置,更换不同的日志实现类,而不需要修改任何代码. .net 项目使用CommonLogging: 1.添加必要的程序集:Common.Logging.dll.Common.Logging.Core.dll.Common.Logging.log4net1

使用Common.Logging

Common.Logging+(log4net/NLog/) common logging是一个通用日志接口,log4net是一个强大的具体实现,也可以用其它不同的实现,如EntLib的日志.NLog等. Common.Logging可以通过修改配置,更换不同的日志实现类,而不需要修改任何代码. .net 项目使用CommonLogging: 1.添加必要的程序集:Common.Logging.dll.Common.Logging.Core.dll.Common.Logging.log4net1

Common.Logging源码解析一

Common.Logging是Apache下的一个开源日志接口组件,主要用于切换不同的日志库,因为当前流行的日志库有很多向log4j.log4net(log4j的.net版本)等等,所以为了能灵活的切换不同的日志组件以适应不同的系统(在系统的迭代过程中),所以设计了Common.Logging这个组件,下面废话不多说开始解析这个组件. 1.架构分析 首先大致浏览了下这个组件的架构 Common.Logging.Core Common.Logging 观察文件类型发现以下两点: (1).整个组件采

ASP.NET使用log4Net日志组件教程(按日期与按日志大小切割)

对于一个大型网站与系统来说,日志是必备的工具,通过日志你可以非常清楚程序的运行情况,及时得到反馈来解决问题,下面介绍ASP.NET版本的log4Net日志组件是个非常强大的工具,最新版本for .net2.0 1.2.10.0 本人搞了一天,终于知道搞清楚怎样使用了,简单记录一下. 以下介绍的方法是log4net使用单独的配置文件的. 开始行动: 第一步:在项目引用log4net.dll文件 第二步: 在Web.config文件中加入一句代码,位置如下: <configuration>   

查看weblogic各组件版本

[[email protected] logs]# ls -l /bea/ total 136 drwxr-xr-x 6 root root  4096 Jun 24 09:35 coherence_3.5 -rw-r----- 1 root root   317 Jun 24 10:34 domain-registry.xml drwxr-xr-x 2 root root  4096 Jun 24 10:34 logs drwxr-xr-x 7 root root 28672 Jun 24 0

报错:此版本的SQL Server Data Tools与此计算机中安装的数据库运行时组件不兼容

在Visual Studio 2012中使用Entity Framework,根据模型生成数据库时,报如下错误: 无法在自定义编辑器中打开Transact-SQL文件此版本的SQL Server Data Tools与此计算机中安装的数据库运行时组件不兼容 解决办法:下载"Server Data Tools for Visual Studio 2012" ,并安装,重新启动Visual Studio 2012.

Failed obtaining configuration for Common.Logging from configuration section &#39;common/logging&#39;

spring.net 配置时 总回出现" Failed obtaining configuration for Common.Logging from configuration section 'common/logging' 错误. 解决方案:在app.config中包含了 <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />