NLog

官网:https://nlog-project.org

配置文件:https://raw.githubusercontent.com/NLog/NLog/dev/src/NuGet/NLog.Config/content/NLog.config

framework环境下

1、安装

 2、将配置文件下载下来后复制到程序根目录中,并设置属性

 3、补充配置文件内容

<?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">

  <variable name="myvar" value="myvalue"/>

  <targets>
    <target name="logfile" xsi:type="File" fileName="${basedir}/file.txt" />
    <target name="logconsole" xsi:type="Console" />
  </targets>

  <rules>
    <logger name="*" minlevel="Info" writeTo="logconsole" />
    <logger name="*" minlevel="Debug" writeTo="logfile" />
  </rules>
</nlog>

4、控制台的主方法

class Program
    {
        private static readonly Logger Logger = LogManager.GetCurrentClassLogger();

        public static void Main()
        {
            try
            {
                Logger.Info("Hello world");
                Logger.Debug("Hello world22");
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "Goodbye cruel world");
            }
        }
    }

5、运行后在Debug文件夹下就会产生日志文件

注意事项:

  • 配置文件可下载后复制到程序中,它会自动读取;也可直接代码配置或者app.config文件中配置,详情见官网文档。
  • NLog支持以下日志级别:从低到高(注:若配置文件设置了最低级别(minlevel),它将匹配比其更高的所有级别日志

    • Trace-非常详细的日志,其中可能包含大量信息,例如协议有效负载。通常仅在开发期间启用此日志级别
    • Debug -调试信息,其详细程度少于跟踪信息,通常在生产环境中未启用。
    • Info -信息消息,通常在生产环境中启用
    • Warn -警告消息,通常针对非关键性问题,可以恢复或为临时故障
    • Error -错误消息-大多数情况下,这些是 Exceptions
    • Fatal -非常严重的错误!

6、配置项<targets async=” Boolean”> //是否  <target

 xsi:type="File"               //输出类型
          name="String"                //节点名称
          layout="Layout"             //日志输入格式
          header="Layout"             //日志头显示的文本内容
          footer="Layout"             //日志尾显示的文本内容
          encoding="Encoding"        //文件编码格式
          lineEnding="Enum"          //行结束模式
          archiveAboveSize="Long"            //存档上限值,1024=1Kb(注意:在多进程并发记录日志的情况下,启用该选项可能会大幅降低日志记录速度。在单进程时,为了达到最佳性能,可以考虑设置ConcurrentWrites为false。)
maxArchiveFiles="Integer" //保存的最大存档文件数,默认9 archiveFileName="Layout" //存档文件名称。允许使用Layout archiveNumbering="Enum" //存档文件的编号方式 archiveEvery="Enum" //是否在每个设定时间刻自动存档日志文件(
Day – 每日存档。Hour – 每小时存档。Minute – 每分钟存档。Month – 每月存档。None – 不按时间固定存档。Year – 每年存档。)
replaceFileContentsOnEachWrite="Boolean" //是否覆盖每次写入的日志内容,默认false
fileAttributes="Enum" //文件属性(只支持Windows)
      fileName="Layout" //写入日志的文件名称 支持Layout
deleteOldFileOnStartup="Boolean" //启动时,是否删除旧的日志文件 。默认为false
    enableFileDelete="Boolean" //否允许删除日志文件。默认为true
createDirs="Boolean" //是否允许自动创建(不存在的)目录。默认为true。
concurrentWrites="Boolean" //是否允许使用通过多个进程的方式,将日志信息并行写入文件中。,默认为true
openFileCacheTimeout="Integer" //文件保持打开状态的最大时间秒数
openFileCacheSize="Integer" //保持打开状态的文件数量
networkWrites="Boolean" //是否通过多线程由不同的网络主机并行向文件中写入日志默认false
concurrentWriteAttemptDelay="Integer"
concurrentWriteAttempts="Integer"
bufferSize="Integer" //日志文件缓存区大小(字节) 默认值为32768(32KB)
autoFlush="Boolean" //在每次日志信息后,是否自动刷新文件缓存区 默认true
keepFileOpen="Boolean" //是否保持日志文件处于打开状态,以代替其在每次日志写事件发生时频繁打开和关闭默认值为false。备注:设置此属性为true,有助于提高性能。
/>
</targets>

 

posted @ 2021-02-18 17:41  疯狂阿坤  阅读(310)  评论(0编辑  收藏  举报