我试图使用NuGet软件包来配置Common.Logging在ASP.Net MVC项目中使用NLog2.根据以下URL提供的信息,我相信我的记录器配置正确,但我仍然会收到配置错误.
@L_403_0@
@L_502_1@
<configuration> <configSections> <section name="nlog" type="NLog.Config.ConfigSectionHandler,NLog"/> <sectionGroup name="common"> <section name="logging" type="Common.Logging.ConfigurationSectionHandler,Common.Logging" /> </sectionGroup> </configSections> <common> <logging> <factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter,Common.Logging.NLog20"> <arg key="configType" value="INLINE" /> </factoryAdapter> </logging> </common> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets> <target name="logfile" xsi:type="file" filename="e:\logfile.txt" layout="${date:format=yyyy/MM/dd HH:mm:ss} ${message}" /> </targets> <rules> <logger name="*" minlevel="Trace" writeTo="logfile" /> </rules> </nlog> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
据我所知,这是我应该做的一切,但是当我尝试运行Web项目时,我收到配置错误…
Parser Error Message: An error occurred creating the configuration section handler for common/logging: Unable to create type ‘Common.Logging.NLog.NLogLoggerFactoryAdapter,Common.Logging.NLog20’
任何人都可以提供有关遗漏或错误的建议?
解决方法
问题似乎是Common.Logging NuGet包(v2.0.0)添加的默认配置是不正确的.
web.config中的运行时部分需要更改为以下内容:
<dependentAssembly> <assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="2.0.0.0" /> </dependentAssembly>
注意oldVersion值.这似乎是导致错误的原因(至少基于我在上述问题中概述的情况).
另请参见这个相关的GitHub问题:Possible Issues with Common.Logging / Common.Logging.NLog20 NuGet packages.