• C# NLog 配置


    首先用NuGet安装NLog依赖DLL

    NLog

    NLog.Config

    NLog.Schema

    NLog配置文件NLog.config:

    <?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="d:
    log
    log-internal.log">
    
      <!-- optional, add some variables
      https://github.com/nlog/NLog/wiki/Configuration-file#variables
      -->
      <!--<variable name="myvar" value="myvalue"/>-->
    
      <variable name="logDir" value="${basedir}/nlog"/>
      <variable name="logFileName" value="${date:format=yyyyMMdd}.txt"/>
      <variable name="logArchiveFileName" value="${date:format=yyyyMMdd}_{#}.txt"/>
      <variable name="logLayout" value="${date:format=yyyy-MM-dd HH:mm:ss.fff} [${level}] ${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 xsi:type="File" name="info"
                layout="${logLayout}"
                fileName="${logDir}/info/${logFileName}"
                archiveFileName="${logDir}/info/${logArchiveFileName}"
                archiveAboveSize="10485760"
                archiveNumbering="Sequence"
                maxArchiveFiles="100"
                concurrentWrites="true"
                keepFileOpen="true"
                openFileCacheTimeout="30"
                encoding="UTF-8" />
    
        <target xsi:type="File" name="debug"
                layout="${logLayout}"
                fileName="${logDir}/debug/${logFileName}"
                archiveFileName="${logDir}/debug/${logArchiveFileName}"
                archiveAboveSize="10485760"
                archiveNumbering="Sequence"
                maxArchiveFiles="100"
                concurrentWrites="true"
                keepFileOpen="true"
                openFileCacheTimeout="30"
                encoding="UTF-8" />
    
        <target xsi:type="File" name="error"
                layout="${logLayout}"
                fileName="${logDir}/error/${logFileName}"
                archiveFileName="${logDir}/error/${logArchiveFileName}"
                archiveAboveSize="10485760"
                archiveNumbering="Sequence"
                maxArchiveFiles="100"
                concurrentWrites="true"
                keepFileOpen="true"
                openFileCacheTimeout="30"
                encoding="UTF-8" />
    
      </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" />
        -->
    
        <logger name="*" minlevel="Info" maxlevel="Info" writeTo="info" />
    
        <logger name="*" minlevel="Debug" maxlevel="Debug" writeTo="debug" />
    
        <logger name="*" minlevel="Error" maxlevel="Error" writeTo="error" />
    
      </rules>
    </nlog>
    View Code

    变量定义:

    private Logger _log = NLog.LogManager.GetLogger("NLogTest");
    View Code

    或者:

    private Logger _log = NLog.LogManager.GetCurrentClassLogger();
    View Code

    写日志示例:

    private void button4_Click(object sender, EventArgs e)
    {
        Task.Run(() =>
        {
            Log("==== 开始 ========");
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
            List<Task> taskList = new List<Task>();
            Task tsk = null;
            int taskCount = 0;
    
            tsk = Task.Run(() =>
            {
                for (int i = 0; i < n; i++)
                {
                    _log.Info("测试日志 " + i.ToString("000000"));
                    Interlocked.Increment(ref taskCount);
                }
            });
            taskList.Add(tsk);
    
            tsk = Task.Run(() =>
            {
                for (int i = 0; i < n; i++)
                {
                    _log.Debug("测试日志 " + i.ToString("000000"));
                    Interlocked.Increment(ref taskCount);
                }
            });
            taskList.Add(tsk);
    
            tsk = Task.Run(() =>
            {
                for (int i = 0; i < n; i++)
                {
                    _log.Error("测试日志 " + i.ToString("000000"));
                    Interlocked.Increment(ref taskCount);
                }
            });
            taskList.Add(tsk);
    
            Task.WaitAll(taskList.ToArray());
            Log("Task Count=" + taskCount);
    
            Log("==== 结束 " + ",耗时:" + stopwatch.Elapsed.TotalSeconds.ToString("0.000") + " 秒 ========");
            stopwatch.Stop();
        });
    }
    View Code

     

  • 相关阅读:
    mysql基本操作
    http基础
    react进阶第一讲jsx
    react进阶第二讲——component
    WC2020游记
    数据库实验小结 Resource Manager
    latex 常用小结
    编程之美2013资格赛 水结
    百度电影推荐系统比赛 小结 ——记我的初步推荐算法实践
    10.10作业
  • 原文地址:https://www.cnblogs.com/s0611163/p/15369498.html
Copyright © 2020-2023  润新知