zoukankan      html  css  js  c++  java
  • NET LOG日志的使用以及设置文件大小和数量限制

    NET LOG日志的使用包括log4net和nlog

    1、新建控制台项目ConsoleLog,使用Nuget程序包管理器,添加log4net和nlog

    2、配置log4net 

         a、log4net日志设置 设置保存中的文件夹和指定文件数量和大小

         b、App.config中添加 日志的配置信息

         c、根据App.config中添加日志的配置信息初始化log4net日志

         d使用log4net写日志

    App.config文件中添加log4net的配置信息,本文只配置了日志输出的文件,并对文件的数量做了控制,如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
      </configSections>
      <log4net>
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <file value="LogLog.txt" />
          <appendToFile value="true" />
          <rollingStyle value="Size" />
          <maxSizeRollBackups value="2" />
          <maximumFileSize value="1KB" />
          <staticLogFileName value="true" />
          <layout type="log4net.Layout.PatternLayout">
            <!--<param name="ConversionPattern" value="%-5p %d [%c] [%l] %m%n" />-->
            <conversionPattern value="%-5level %date [%thread] - %message %newline" />
          </layout>
        </appender>
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">      
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
          </layout>
        </appender>
        <!--日志输出到Console-->
        <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
          <mapping>
            <level value="ERROR"/>
            <foreColor value="White"/>
            <backColor value="Red,HighIntensity"/>
          </mapping>
          <mapping>
            <level value="DEBUG"/>
            <backColor value="Green"/>
          </mapping>
          <mapping>
            <level value="Info"/>
            <backColor value="Yellow"/>
          </mapping>
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="Debug"/>
            <param name="LevelMax" value="Fatal"/>
          </filter>
        </appender>
        <root>
          <!--level   all>fatal>error>warn>debug>info>off />-->
          <!--<level value="warn" /> 表示只有warn以上的fatal,error等级才会输出日志,warn debug info等级不会输出日志 
          all 所有等级都会输出日志
          off 所有等级/>-->
          <level value="all" />
          <appender-ref ref="RollingLogFileAppender" />
          <!--<appender-ref ref="ColoredConsoleAppender" />--> 
          <appender-ref ref="ConsoleAppender" />   
        </root>
      </log4net>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
      </startup>
    </configuration>

    使用log4net 写日志 如下:

    using System;
    using System.Threading;
    
    namespace ConsoleLog
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                Console.WriteLine("测试日志");
    
                //Console.WriteLine("log4net 测试日志");
                // 注意
                // 
                //log4net日志设置 设置保存中的文件夹和指定文件数量和大小
                // 1、App.config中添加 日志的配置信息
                // 2、根据App.config中添加日志的配置信息初始化log4net日志
                // 3、使用log4net写日志
                // 
    
                #region log4net
                //log4net.Config.XmlConfigurator.Configure();
                ////上面的这句话表示从App.config中添加日志的配置信息初始化log4net日志
                ////或者也可以在项目的Properties中的AssemblyInfo.cs添加下面一句话
                ////[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension =".config",Watch =true)]
                ////上面2种方式都是表示从App.config中添加日志的配置信息初始化log4net日志
                //
                log4net.ILog log = log4net.LogManager.GetLogger(typeof(TestLog4net));
                while (true)
                {
                    log.Fatal("Fatal log4net 测试日志");
                    log.Error("Error log4net 测试日志");
                    log.Warn("Warn log4net 测试日志");
                    log.Debug("Debug log4net 测试日志");
                    log.Info("Info log4net 测试日志");
                    Thread.Sleep(TimeSpan.FromSeconds(1));
                }
                #endregion
    
    
                Console.ReadLine();
            }
    
    
        }
    }

    3、配置nlog

         a、nlog日志设置保存中的文件夹和指定文件数量和大小

        b、新建nlog.config文件并添加日志的配置信息 ,nlog.config文件属性设置,复制到输出目录:始终复制 ,生成操作:内容

        c、使用nlog写日志

    nlog.config文件中添加lnlog的配置信息,本文只配置了日志输出的文件和彩色控制,并对文件的数量做了控制,如下:

    <?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,-->
        <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"
                    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" />
      </rules>
    </nlog>

    使用log4net 写日志 如下:

    using System;
    using System.Threading;
    
    namespace ConsoleLog
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                Console.WriteLine("测试日志");
    
                //Console.WriteLine("log4net 测试日志");
                // 注意
                // 
                //log4net日志设置 设置保存中的文件夹和指定文件数量和大小
                // 1、App.config中添加 日志的配置信息
                // 2、根据App.config中添加日志的配置信息初始化log4net日志
                // 3、使用log4net写日志
                // 
    
                #region log4net
                //log4net.Config.XmlConfigurator.Configure();
                ////上面的这句话表示从App.config中添加日志的配置信息初始化log4net日志
                ////或者也可以在项目的Properties中的AssemblyInfo.cs添加下面一句话
                ////[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension =".config",Watch =true)]
                ////上面2种方式都是表示从App.config中添加日志的配置信息初始化log4net日志
                //
                //log4net.ILog log = log4net.LogManager.GetLogger(typeof(TestLog4net));
                //while (true)
                //{
                //    log.Fatal("Fatal log4net 测试日志");
                //    log.Error("Error log4net 测试日志");
                //    log.Warn("Warn log4net 测试日志");
                //    log.Debug("Debug log4net 测试日志");
                //    log.Info("Info log4net 测试日志");
                //    Thread.Sleep(TimeSpan.FromSeconds(1));
                //} 
                #endregion
    
                Console.WriteLine("nlog 测试日志 ");
                #region NLog    
                // 注意
                //nlog日志设置保存中的文件夹和指定文件数量和大小
                //nlog日志设置
                // 1、新建nlog.config文件并添加日志的配置信息,
                // nlog.config文件属性设置,复制到输出目录:始终复制 ,生成操作:内容
                // 2、使用nlog写日志
    
                NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
                while (true)
                {
                    log.Fatal("Fatal nlog 测试日志");
                    log.Error("Error nlog 测试日志");
                    log.Warn("Warn nlog 测试日志");
                    log.Debug("Debug nlog 测试日志");
                    log.Info("Info nlog 测试日志");
                    log.Trace("Info nlog 测试日志");
                    Thread.Sleep(TimeSpan.FromSeconds(1));
                }
                #endregion
                Console.ReadLine();
            }
    
    
        }
    }
  • 相关阅读:
    用户画像
    华为离职副总裁徐家骏:年薪千万的工作感悟
    JAVA CAS原理深度分析-转载
    彻底理解ThreadLocal二
    彻底理解ThreadLocal一
    观察者模式(浅谈监听器工作原理)
    Java编程提高性能时需注意的地方
    Spring对Quartz的封装实现简单需注意事项
    FileInputStream和BufferedInputStream的区别
    java
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/13426803.html
Copyright © 2011-2022 走看看