<?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}]${message} ${exception}" />
		<target xsi:type="File" name="universalApiAuditing_target" enableArchiveFileCompression="true" maxArchiveFiles="20" archiveAboveSize="50000000" archiveNumbering="Sequence" fileName="log//ApiAuditing_${date:format=yyyyMMdd}.log"
					layout="${date:format=HH\:mm\:ss.fff} [${threadid}:${level:uppercase=true}]${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}]${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}]${message} ${exception}" />
		<target name="dynamicPrivateFile" xsi:type="AsyncWrapper">
			<target name="innerTarget" 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}]${message} ${exception}"/>
		</target>
	</targets>

	<!-- rules to map from logger name to target -->
	<rules>
		<logger name="Main" minlevel="Trace" writeTo="main_target" />

		<logger name="Communicator" minlevel="Error" writeTo="communicator_target" />
		<logger name="StateMachineMessageCutter" minlevel="Info" writeTo="communicator_target" />
		<logger name="UniversalApiAuditing" minlevel="Info" writeTo="universalApiAuditing_target" />
		<logger name="PumpHandler" minlevel="Debug" writeTo="pumpHandler_target" />
		<logger name="Application" minlevel="Debug" writeTo="application_target" />
		<logger name="Performance" minlevel="Info" writeTo="performance_target" />

		<logger name="DynamicPrivate_Comm_*" minlevel="Error" writeTo="dynamicPrivateFile" final="true" />

		<!--Begin - Your custom log levels if the most below rule with minlevel 'Error' does not satisfy-->



		<!--End - Your custom log levels-->

		<!--SHOULD set a High level for avoid unintentional verbose logging-->
		<logger name="DynamicPrivate_*" minlevel="Error" writeTo="dynamicPrivateFile" final="true" />
	</rules>
</nlog>