How can I successfully configure Common.Logging?
Asked Answered
B

2

10

I'm attempting to use NuGet packages to configure Common.Logging to use NLog2 in an ASP.Net MVC project. Based on the information provided at the URLs below, I believe my loggers are configured properly, but I continue to get configuration errors.

Common.Logging Configuration Instructions

NLog Configuration Tutorial

I've added the following to web.config as per the instructions:

<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>

As far as I can tell, this is everything I should need to do but I'm getting configuration errors when I try to run the web project...

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'

Can anyone offer suggestions on what's missing or in error?

Blastocyst answered 12/2, 2013 at 19:41 Comment(0)
B
13

The problem seems to be that the default configuration added by the Common.Logging NuGet package (v2.0.0) is incorrect.

The runtime section in web.config needs to be changed to the following:

<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>

Note the oldVersion value. This seems to be what was causing the error (at least based on the scenario that I outlined in the question above).

See also this related GitHub issue: Possible Issues with Common.Logging / Common.Logging.NLog20 NuGet packages.

Blastocyst answered 12/2, 2013 at 19:45 Comment(0)
T
1

Worked for me by using

<factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog2">

instead of

<factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog20">

notice 20 vs 2 at the end.

Tillman answered 5/4, 2014 at 13:44 Comment(2)
Hmm I don't think that exists - you must have logging assembly failure turned on (not really sure)Ferity
This is not really an answer rather superstitious , below given: Unable to create type 'Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog2'Carmencita

© 2022 - 2024 — McMap. All rights reserved.