<?xml version="1.0" encoding="utf-8" ?>
<!-- XSD manual extracted from package NLog.Schema: https://www.nuget.org/packages/NLog.Schema-->
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xsi:schemaLocation="NLog NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogFile="log//log-internal.log"
      internalLogLevel="Info" >


  <!-- the targets to write to -->
  <targets>
    <!-- write logs to file -->
    <!--${date}|${level:uppercase=true}|${message} ${exception}|${logger}|${all-event-properties}-->
    <!--keep this 2 forward slash, it both worked for windows and linux-->
    <target xsi:type="File" name="main_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//Main_${date:format=yyyyMMdd}.log"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />
    <target xsi:type="File" name="communicator_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//Comm_${date:format=yyyyMMdd}.log"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />
    <target xsi:type="File" name="fdcServer_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//FdcServer_${date:format=yyyyMMdd}.log"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />
    <target xsi:type="File" name="fdcServerSocket_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//FdcServerSocket_${date:format=yyyyMMdd}.log"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />
    <target xsi:type="File" name="pumpHandler_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//PumpHandler_${date:format=yyyyMMdd}.log"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />
    <target xsi:type="File" name="application_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//Application_${date:format=yyyyMMdd}.log"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />

    <target xsi:type="File" name="performance_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//Performance_${date:format=yyyyMMdd}.log"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />
    <target xsi:type="File" name="cloudRestClient_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//CloudRestClient_${date:format=yyyyMMdd}.log"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />
    <target xsi:type="File" name="hsPOS_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//HengshanPOS_${date:format=yyyyMMdd}.log"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />
    <target xsi:type="File" name="submitter_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//PosTrxSubmitter_${date:format=yyyyMMdd}.log"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />
    <target xsi:type="File" name="scanner_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//Scanner_${date:format=yyyyMMdd}.log"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />
    <target xsi:type="File" name="fueling_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//Fueling_${date:format=yyyyMMdd}.log"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />
    <target xsi:type="Console" name="console_target"
                layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}" />

    <target name="dynamicPrivateFile" xsi:type="File" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence"
            fileName="log\\${replace:searchFor=DynamicPrivate_:replaceWith=:inner=${logger}}_${date:format=yyyyMMdd}.log"
            layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${logger} - ${message} ${exception}"/>
    </targets>

  <!-- rules to map from logger name to target -->
  <rules>
    <logger name="Main" minlevel="Debug" writeTo="main_target" />
    <logger name="Communicator" minlevel="Info" writeTo="communicator_target" />
    <logger name="StateMachineMessageCutter" minlevel="Info" writeTo="communicator_target" />
    <logger name="FdcServer" minlevel="Debug" writeTo="fdcServer_target" />
    <logger name="FdcServerSocket" minlevel="Debug" writeTo="fdcServerSocket_target" />
    <logger name="PumpHandler" minlevel="Debug" writeTo="pumpHandler_target" />
    <logger name="Application" minlevel="Debug" writeTo="application_target" />
    <logger name="Performance" minlevel="Debug" writeTo="performance_target" />
    <logger name="CloudRestClient" minlevel="Debug" writeTo="cloudRestClient_target" />
    <logger name="HengshanPos" minlevel="Debug" writeTo="hsPOS_target"/>
    <logger name="PosTrxSubmitter" minlevel="Debug" writeTo="submitter_target"/>
    <logger name="TrxScanner" minlevel="Debug" writeTo="scanner_target"/>
    <logger name="FuelingManager" minlevel="Debug" writeTo="fueling_target"/>
    <!--<logger name="default" minlevel="Debug" writeTo="main_target" />-->

    <logger name="DynamicPrivate_*" minlevel="Debug" writeTo="dynamicPrivateFile" final="true" />
  </rules>
</nlog>