﻿<?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"
      autoReload="true"
      internalLogLevel="Error"
      internalLogFile="temp\internal-nlog.txt">

	<!-- enable asp.net core layout renderers -->
	<extensions>
		<add assembly="NLog.Web.AspNetCore"/>
	</extensions>

	<!-- the targets to write to -->
	<targets>
		<target name="db"
				xsi:type="Database"
				connectionString="${configsetting:item=Logging.NLog}"
				dbProvider="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"
				commandType="StoredProcedure"
				commandText="NLog_AddEntry_p"
             >
			<parameter name="@machineName"    layout="${machinename}" />
			<parameter name="@logged"         layout="${date}" />
			<parameter name="@level"          layout="${level}" />
			<parameter name="@message"        layout="${message}" />
			<parameter name="@logger"         layout="${logger}" />
			<parameter name="@properties"     layout="${all-event-properties:separator=|}" />
			<parameter name="@callsite"       layout="${callsite}" />
			<parameter name="@exception"      layout="${exception:tostring}" />
		</target>
	</targets>

	<!-- rules to map from logger name to target -->
	<rules>

    <!--Skip non-critical Microsoft logs and so log only own logs-->
    <logger name="Microsoft.*" maxlevel="Info" final="true" />
    <!-- BlackHole without writeTo -->
    <logger name="*" minlevel="Error" writeTo="db" />
  </rules>
</nlog>