<?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="false"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">

  <!-- optional, add some variables
  https://github.com/nlog/NLog/wiki/Configuration-file#variables
  -->
  <variable name="datetimeRepl" value="${replace:searchFor=^(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)?[0-9][0-9]\\s[0-9][0-9]\:[0-9][0-9]\:[0-9][0-9][.][0-9][0-9][0-9]\\s:replaceWith=:regex=true:${message}}"/>

  <!--
  See https://github.com/nlog/nlog/wiki/Configuration-file
  for information on customizing logging rules and outputs.
   -->
  <targets>

    <!--
    add your targets here
    See https://github.com/nlog/NLog/wiki/Targets for possible targets.
    See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
    -->

    <!--
    Write events to a file with the date in the filename.
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
            layout="${longdate} ${uppercase:${level}} ${message}" />
    -->
    <target name="logfile" xsi:type="File" fileName="${basedir}/log/trace.log"
        layout="${level:format=FirstCharacter} ${longdate}[${pad:padding=5:${threadid}}] ${logger} ${when:when=logger=='XPO':inner=${datetimeRepl}:else=${message}} ${onexception:message\:${exception:format=type,ToString,StackTrace:maxInnerExceptionLevel=9:innerFormat=shortType,ToString,StackTrace}}"
        archiveEvery="Day" archiveNumbering="Date"  maxArchiveFiles="7"/>
    <target name="nulltarget" xsi:type="Null" />
  </targets>

  <rules>
    <!-- add your logging rules here -->

    <!--
    Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace)  to "f"
    <logger name="*" minlevel="Debug" writeTo="f" />
    -->
    <!--wcf -> Um Debug-Ausgaben zu erhalten System.ServiceModel.MessageLogging das minLevel="Trace" stellen und zusätzlich in der web.config die Kommentare im Bereich "diagnostics" in
    der web.config entfernen. Unbedingt dieses wieder kommentieren falls man die Debug-Ausgaben wieder ausschaltet (minlevel="Off"), da es Performance-Auswirkungen haben kann.
    -->
    <logger name="System.ServiceModel.MessageLogging" minlevel="Off" writeTo="logfile" final="true"/>
    <logger name="XPO" minlevel="Trace" writeTo="logfile" final="true"/>
    <logger name="*" minlevel="Trace" writeTo="logfile">
      <filters>
        <when condition="equals('${logger}','System.ServiceModel.MessageLogging')" action="Ignore" />
        <when condition="equals('${logger}','XPO')" action="Ignore" />
      </filters>
    </logger>
  </rules>
</nlog>
