NET LOG日志的使用以及设置文件大小和数量限制------关键字---caced和date

NET LOG日志的使用以及设置文件大小和数量限制------关键字---caced和date

新建控制台项目,选择项目右键属性,选择 “ 管理NuGet程序包(N)... ”,搜索NLog ,添加NLog ,版本4.7.14

1、新建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"
      autoReload="true" throwExceptions="false"
      internalLogLevel="Warn" internalLogFile="${basedir}/logs/NlogRecords.log">
  <!--Nlog内部日志记录为Off关闭。除非纠错,不可以设为Trace否则速度很慢,起码Debug以上-->
  <targets>
    <!--输出文件 按天归档,最多存档文件7个,单个文件不超过50M,-->
    <!--输出文件 按天归档,最多存档文件7个,单个文件不超过50M,
    日志文件的大小个数与文件名称有非常密切的关系,archiveFileName日志文件名称是常量的时候,设置archiveAbovesize会根据archiveAbovesize设置的大小进行生成信息的日志文件,
    archiveFileName日志文件名称是时间格式的时候,设置archiveAbovesize会根据archiveAbovesize设置的大小以及日志文件的时间格式来进行生成信息的日志文件,谁先到以水为准,
    例如同一时间内日志文件大小达到archiveAbovesize日式文件设置的大小了,则以为archiveAbovesize为准生成新的文件
    ,如果日志文件大小没有达到,时间变化了,则以时间为准生成新的日志文件,archiveAbovesize="10240",表示日志文件大小设置10kb,即archiveAbovesize="10240"
    ${date:format=yyyy-MM-dd HH_mm_ss}  archiveFileName="${basedir}/logs/${date:format=yyyy-MM-dd HH_mm_ss}.txt"
    ${cached:${date:format=yyyy-MM-dd HH_mm_ss}}    archiveFileName="${basedir}/logs/${cached:${date:format=yyyy-MM-dd HH_mm_ss}}.txt"-->
    <target name="logFile" xsi:type="File"
                concurrentWrites="true"
                fileName="${basedir}/logs/logfile.txt"
                archiveFileName="${basedir}/logs/log.{#}.txt"
                archiveNumbering="Date"
                maxArchiveFiles="7"
                archiveEvery="Day"
                archiveDateFormat="yyyyMMdd"
                archiveAbovesize="10240"
                layout="${longdate} ${uppercase:${level}} ${message}" />

    <!--日志名称时间变量 关键字cached ${cached:${date:format=yyyy-MM-dd HH_mm_ss}}    archiveFileName="${basedir}/logs/${cached:${date:format=yyyy-MM-dd HH_mm_ss}}.txt"-->
    <target name="logFileSize0" xsi:type="File"
               concurrentWrites="true"
               fileName="${basedir}/logs/${cached:${date:format=yyyy-MM-dd HH_mm_ss}}.txt"
               maxArchiveFiles="7"
               archiveAbovesize="1024"
               layout="${longdate} ${uppercase:${level}} ${message}" />

    <!--日志名称时间变量 ${date:format=yyyy-MM-dd HH_mm_ss}   archiveFileName="${basedir}/logs/${date:format=yyyy-MM-dd HH_mm_ss}.txt"-->
    <target name="logFileSize1" xsi:type="File"
               concurrentWrites="true"
               fileName="${basedir}/logs/${date:format=yyyy-MM-dd HH_mm_ss}.txt"
               maxArchiveFiles="7"
               archiveAbovesize="1024"
               layout="${longdate} ${uppercase:${level}} ${message}" />

    <!--日志名称固定常量   archiveFileName="log.txt"-->
    <target name="logFileSize2" xsi:type="File"
               concurrentWrites="true"
               fileName="${basedir}/logs/log.txt"
               maxArchiveFiles="7"
               archiveAbovesize="1024"
               layout="${longdate} ${uppercase:${level}} ${message}" />

    <!--日志名称时间变量 ${date:format=yyyy-MM-dd HH_mm}   archiveFileName="${basedir}/logs/${date:format=yyyy-MM-dd HH_mm}.txt"-->
    <target name="logFileSize" xsi:type="File"
               concurrentWrites="true"
               fileName="${basedir}/logs/${date:format=yyyy-MM-dd HH_mm}.txt"
               maxArchiveFiles="7"
               archiveAbovesize="10240"
               layout="${longdate} ${uppercase:${level}} ${message}" />
    <!--输出彩色控制台 xsi:type="Console"是指定输出到普通控制台-->
    <target name="logConsole" xsi:type="ColoredConsole"
            useDefaultRowHighlightingRules="false"
            layout="${pad:padding=-5:fixedLength=True:inner=${level:uppercase=true}} : ${longdate} | ${logger} | ${message} ${onexception:inner=${newline}${exception:format=tostring}}">
      <highlight-row condition="level == LogLevel.Trace" foregroundColor="DarkGray" />
      <highlight-word text="TRACE" foregroundColor="White" backgroundColor="DarkGray" ignoreCase="false"  wholeWords="true"/>
      <highlight-word text="DEBUG" foregroundColor="White" backgroundColor="DarkGreen" ignoreCase="false"  wholeWords="true"/>
      <highlight-word text="INFO " foregroundColor="White" backgroundColor="DarkCyan" ignoreCase="false"  wholeWords="false"/>
      <highlight-word text="WARN " foregroundColor="DarkGray" backgroundColor="Yellow" ignoreCase="false"  wholeWords="false"/>
      <highlight-word text="ERROR" foregroundColor="White" backgroundColor="Red" ignoreCase="false"  wholeWords="true"/>
      <highlight-word text="FATAL" foregroundColor="White" backgroundColor="Magenta" ignoreCase="false"  wholeWords="true"/>
    </target>
  </targets>
  <rules>
    <!--注意这里的name="*",如果这里的name=xx了那么在C#的后台.cs文件使用日志的时候必须把xx当做参数来传递,否则没有日志输出-->
    <!--注意这里的name="*",如果这里的name=xx了那么在C#的后台.cs文件使用日志的时候必须把xx当做参数来传递,否则没有日志输出-->
    <!--minlevel  all>fatal>error>warn>debug>info>trace>off />-->
    <!--minlevel="Info" 表示只有Info以上的fatal,error才会输出日志,warn debug info trace不会输出日志
        all 所有等级都会输出日志
        off 所有等级都不输出日志/>-->
    <logger name="*" minlevel="Info" writeTo="logConsole" />
    <logger name="*" minlevel="Info" writeTo="logFile" />
    <!--<logger name="*" minlevel="Info" writeTo="logFileSize" />-->
  </rules>
</nlog>

 

2、设置nlog.config属性,,复制到输出目录---始终复制,生成操作---内容

 

3、代码使用

using log4net;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using Utils;

namespace ConsoleTest
{
    internal class Program
    {
        /// <summary>
        /// 日志
        /// </summary>
        private static readonly NLog.Logger _logger = NLog.LogManager.GetCurrentClassLogger();
        static void Main(string[] args)
        {
            try
            {
                TestEnum();

                #region MyRe测试gion
                //TestLinqOrderBy();
                //TestResolveArgs();
                //TestTestHID();
                //TestConvert();
                //TesttWebSocket();
                #endregion
                Console.ReadKey();
            }
            catch/*(Exception ex)*/
            {
                //_logger.Error($"IdWorkerManager,初始化报错,错误信息:{ex.InnerException}");
            }
        }

        public static void TestEnum()
        {
            _logger.Info($"测试枚举。。。。");
            string comment = "77777";
            var enumIsDefined = Enum.IsDefined(typeof(EvMSEvaluateBmyyy), "服务条件差");
            if (enumIsDefined)
            {
                var enumValue = (EvMSEvaluateBmyyy)Enum.Parse(typeof(EvMSEvaluateBmyyy), "服务条件差");
                comment = comment + "|" + enumValue.GetHashCode() + "|" + "服务条件差";
                //获取枚举名称字符串
                var ss= EvMSEvaluateBmyyy.交易核税慢.ToString();
            }
            while (true)
            {
                _logger.Info($"测试枚举。。。。");
            }

            //int a = 1;
            //var senumName = Enum.GetName(typeof(EvMSEvaluateBmyyy), a);
            //Console.WriteLine($"枚举--根据值获取名称:值:{a}------名称:{senumName}");
            //var enumValue = Enum.GetValues(typeof(EvMSEvaluateBmyyy));
            //var enumValue1 = Enum.GetNames(typeof(EvMSEvaluateBmyyy));
            //var enumValue2 = Enum.IsDefined(typeof(EvMSEvaluateBmyyy),2);
            //var enumValue3 = Enum.IsDefined(typeof(EvMSEvaluateBmyyy), "服务条件差");
            //if (enumValue3)
            //{
            //   var dddd= Enum.Parse(typeof(EvMSEvaluateBmyyy), "服务条件差");
            //    var dddd2 =(EvMSEvaluateBmyyy)(dddd);
            //    var dddd3 = dddd2.GetHashCode();
            //    Console.WriteLine();
            //}
            var enumValue4 = Enum.IsDefined(typeof(EvMSEvaluateBmyyy), EvMSEvaluateBmyyy.其他);
        }
   }
}

 

posted @ 2022-05-30 17:04  龙骑科技  阅读(307)  评论(0编辑  收藏  举报