<?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="nlogtemp\internal-nlog.txt">

 <!-- 加载ASP.NET Core插件 -->
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions>

  <!-- 输出目的地 -->
  <targets>
    <!-- 输出到文件,这个文件记录所有日志 -->
    <!--<target xsi:type="File" name="allfile" fileName="\nlogtemp\${shortdate}\nlog-all-${shortdate}.log"
                layout="记录时间：${longdate}|控制器：${logger}|消息：${message} 异常：${exception}" />-->

    <!-- 另外一个日志记录文件,户口也跳过Microsoft开头相关日志信息 -->
    <!--archiveFileName表示滚动日志存放路径，log.{#####}.txt是滚动日志文件名-->
    <!--archiveAboveSize每个日志文件大小的最大值（单位：字节）20(mb)=20971520(b)，主日志文件超过大小超过该值时会将文件内容写入滚动日志并清空主日志文件内容-->
    <!--maxArchiveFiles滚动日志文件上限数，滚动日志文件数达到上限新的文件内容会覆盖旧文件内容 -->

    <target xsi:type="File" name="own_file" fileName="log/${shortdate}/own_${shortdate}.log"
            archiveFileName="log/${shortdate}/own_${shortdate}.{#####}.log"
            archiveAboveSize="20971520" archiveNumbering="Rolling" concurrentWrites="true" maxArchiveFiles="-1" keepFileOpen="false" 
            layout="${level}|记录时间：${longdate}|${event-properties:item=EventId.Id}|控制器：${logger}|action: ${aspnet-mvc-action}|${newline}消息：${message}|${newline}异常：${exception}|${newline}url: ${aspnet-request-url}|${newline}" />
    <!--layout="记录时间：${longdate}|控制器：${logger}|  action: ${aspnet-mvc-action}|  消息：${message} 异常：${exception}" />-->
    <!--错误提示-->
    

    <target name="error_file" xsi:type="File" fileName="log/${shortdate}/error-${shortdate}.log"
            archiveFileName="log/${shortdate}/own-${shortdate}.{#####}.log"
            archiveAboveSize="20971520" archiveNumbering="Rolling" concurrentWrites="true" maxArchiveFiles="-1" keepFileOpen="false" 
            layout="${level}|记录时间：${longdate}|控制器：${logger}|action: ${aspnet-mvc-action}|${newline}消息：${message}|${newline}异常：${onexception:${exception:format=tostring} ${newline} ${stacktrace}|${newline}" />
    <target name="debugger_file" xsi:type="File" fileName="log/${shortdate}/debugger-${shortdate}.log"
            archiveFileName="log/${shortdate}/debugger-${shortdate}.{#####}.log"
            archiveAboveSize="20971520" archiveNumbering="Rolling" concurrentWrites="true" maxArchiveFiles="-1" keepFileOpen="false"
            layout="${level}|记录时间：${longdate}|控制器：${logger}|action: ${aspnet-mvc-action}|消息：${message}|${newline}" />
     <target name="warn_file" xsi:type="File" fileName="log/${shortdate}/warn-${shortdate}.log"
            archiveFileName="log/${shortdate}/warn-${shortdate}.{#####}.log"
            archiveAboveSize="20971520" archiveNumbering="Rolling" concurrentWrites="true" maxArchiveFiles="-1" keepFileOpen="false" 
            layout="${level}|记录时间：${longdate}|控制器：${logger}|action: ${aspnet-mvc-action}|消息：${message}|${newline}" />
    <!-- write to the void aka just remove -->
    <target xsi:type="Null" name="blackhole" />
  </targets>

  <!-- 写入目的地的规则 -->
  <rules>
    <!--全部记录,包括Microsoft开头的相关日志信息-->
    <!--<logger name="*" minlevel="Trace" writeTo="allfile" />-->

    <!--name - 记录者的名字 (允许使用通配符*)
        minlevel - 匹配日志范围的最低级别
        maxlevel - 匹配日志范围的最高级别
        level - 匹配的单一日志级别 :::::NLog 用于输出日志的级别包括：Trace,Debug,Info,Warn,Error,Fatal
        levels - 匹配的一系列日志级别，由逗号分隔。
        writeTo - 规则匹配时日志应该被写入的一系列目标，由逗号分隔。-->

    <!--跳过Microsoft开头的相关日志信息-->
    <!--<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />-->

    <!--错误提示-->
    <logger name="*" minlevel="Trace" writeTo="own_file" />
    <logger name="*" level="Debug" writeTo="debugger_file" />
    <logger name="*" minlevel="Error" writeTo="error_file" />
    <logger name="*" level="Warn" writeTo="warn_file" />
 

  </rules>
</nlog>
