NLog throws configuration exception on all aspnet layout renderers

后端 未结 4 1372
盖世英雄少女心
盖世英雄少女心 2021-02-05 05:02

I have been working to set up NLog v2 on my ASP.NET MVC 3 application and it has worked very well so far. (I\'m using the package from the offical nuGet repository) However, w

相关标签:
4条回答
  • 2021-02-05 05:57

    In my case I was using extension of le_nlog and for a reason, it was not installed in the app !

    so I installed *le_nlog* by doing so :

    PM> Install-Package le_nlog
    
    0 讨论(0)
  • 2021-02-05 06:05

    As of NLog 4.0 the ASP.NET renderes are now in Nlog.Web http://nlog-project.org/2015/06/13/NLog-Extended_NLog-Web_and_NLog-Windows-Forms.html

    0 讨论(0)
  • 2021-02-05 06:06

    Make sure you have referenced the NLog.Extended assembly which is where those layouts are defined and which must have been added by the NuGet package as well to the references:

    <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          throwExceptions="true">
    
        <extensions>
            <add assembly="NLog.Extended" />
        </extensions>
    
        <variable name="logDirectory" value="C:\Logs" />
    
        <targets>
            <target name="logFile" 
                    xsi:type="File" 
                    fileName="${logDirectory}\app.log"
                    layout="${aspnet-user-identity} ${message}" />
        </targets>
    
        <rules>
            <logger name="*" minlevel="Debug" writeTo="logfile" />
        </rules>
    
    </nlog>
    
    0 讨论(0)
  • 2021-02-05 06:07

    Alternative solution if Darin's doesn't work

    You must have NLog.Extended referenced as Darin mentions http://nuget.org/packages/NLog.Extended

    As of NLog 2.0 you do not need to add reference in the configuration XML.

    My problem was that I had no hard references to NLog.Extended in my web layer (where my web.config is) so the compiler wasn't copying the file where it needed to be.

    This can be easily fixed by adding a hard reference to NLog.Extended that is a no-op wherever you are configuring your logging:

    //forces the compiler to include NLog.Extensions in all downstream output directories
    private static AspNetApplicationValueLayoutRenderer blank = new AspNetApplicationValueLayoutRenderer();
    
    0 讨论(0)
提交回复
热议问题