Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NLog Console application

I have a Console application and for logging its activities i copied the same Nlog.config file that I had on my web application. I also imported Nlog.Extended and Nlog.Web. I also checked Nlog.config properties (Build Action = Content, copy to output directory = copy Always) and set internalLogFile and internalLogLevel.

When

private static Logger logger = LogManager.GetCurrentClassLogger();

is called 'System.TypeInitializationException' is thwown and, after all

Scanning XXXXLayoutRenderer (all parameter in my config)

this compares on my internal log file

Info Found 105 configuration items

And nothing else

This is my NLog.config file

  <?xml version="1.0" encoding="utf-8" ?>
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
        autoReload="true"
        throwExceptions="true"
        internalLogFile="c:\Temp\internal_log_file.txt"
        internalLogLevel="Trace"
        internalLogToConsole="true">


    <variable name="brief" value="${longdate} | ${level} | ${message}"/>
    <variable name="verbose" value="${longdate} | ${machinename} | ${processid} | ${processname} | ${level} | ${logger} | ${message}"/>
    <variable name="logDirectory" value="${basedir}/Logs/${date:format=yyyyMM}"/>

    <targets>


      <!-- FILE target -->
      <target name="file" xsi:type="File" layout="${brief}" fileName="${logDirectory}/${shortdate}.txt"/>

      <!-- EMAIL target -->
      <target name="email" xsi:type="Mail"
              smtpServer="smtp.gmail.com"
              smtpPort="587"
              smtpAuthentication="Basic"
              smtpUserName="[email protected]"
              smtpPassword="password"
              enableSsl="true"
              from="[email protected]"
              to="[email protected]"
              layout="${verbose}"
            />

      <!-- DATABASE target -->
      <target name="database" xsi:type="Database">


        <connectionStringName>NLogEntities</connectionStringName>

        <commandText>
          insert into dbo.Log (
          Application, Logged, Level, Message,
          Username,
          ServerName, Port, Url, Https,
          ServerAddress, RemoteAddress,
          Logger, CallSite, Exception
          ) values (
          @Application, @Logged, @Level, @Message,
          @Username,
          @ServerName, @Port, @Url, @Https,
          @ServerAddress, @RemoteAddress,
          @Logger, @Callsite, @Exception
          );
        </commandText>
        <parameter name="@application" layout="${appsetting:key=AppName:default=Unknown}" />
        <parameter name="@logged" layout="${date}" />
        <parameter name="@level" layout="${level}" />
        <parameter name="@message" layout="${message}" />

        <parameter name="@username" layout="${identity}" />

        <parameter name="@serverName" layout="${aspnet-request:serverVariable=SERVER_NAME:default=Unknown}" />
        <parameter name="@port" layout="${aspnet-request:serverVariable=SERVER_PORT}" />
        <parameter name="@url" layout="${aspnet-request:serverVariable=HTTP_URL}" />
        <parameter name="@https" layout="${when:inner=1:when='${aspnet-request:serverVariable=HTTPS}' == 'on'}${when:inner=0:when='${aspnet-request:serverVariable=HTTPS}' != 'on'}" />

        <parameter name="@serverAddress" layout="${aspnet-request:serverVariable=LOCAL_ADDR}" />
        <parameter name="@remoteAddress" layout="${aspnet-request:serverVariable=REMOTE_ADDR}:${aspnet-request:serverVariable=REMOTE_PORT}" />

        <parameter name="@logger" layout="${logger}" />
        <parameter name="@callSite" layout="${callsite}" />
        <parameter name="@exception" layout="${exception:tostring}" />
      </target>
    </targets>
    <rules>
      <!-- DATABASE rules -->
      <logger name="*" minlevel="Error" writeTo="database" />
      <!-- EMAIL rules -->
      <logger name="*" minlevel="Error" writeTo="email" />
      <!-- FILE rules -->
      <logger name="*" minlevel="Trace" writeTo="file" />
    </rules>
  </nlog>

And this is the output internal log file

    2016-01-22 12:47:43.0520 Debug ScanAssembly('NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c')
    ....
    ....

    2016-01-22 12:47:43.2532 Trace    Scanning LongDateLayoutRenderer 'Layout Renderer: ${longdate}'
    2016-01-22 12:47:43.2532 Trace    Scanning LiteralLayoutRenderer 'Layout Renderer: ${literal}'
    2016-01-22 12:47:43.2532 Trace    Scanning LevelLayoutRenderer 'Layout Renderer: ${level}'
    2016-01-22 12:47:43.2532 Trace    Scanning LiteralLayoutRenderer 'Layout Renderer: ${literal}'
    2016-01-22 12:47:43.2532 Trace    Scanning MessageLayoutRenderer 'Layout Renderer: ${message}'
    2016-01-22 12:47:43.2532 Info Found 105 configuration items

Where is the problem?

like image 253
Alessandro Bellone Avatar asked Sep 25 '22 14:09

Alessandro Bellone


1 Answers

Solution Found!!! I had to change this

<parameter name="@application" layout="${appsetting:key=AppName:default=Unknown}" />

with this

<parameter name="@application" layout="${appsetting:name=AppName:default=Unknown}" />

The key word has to be replaced with name word.

Solved.

like image 90
Alessandro Bellone Avatar answered Sep 28 '22 06:09

Alessandro Bellone