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="Log\Log.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();
        }


    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要添加日志文件大小和文件数量限制,可以使用spdlog的Rotating File Sink。这个Sink可以根据文件大小数量自动轮换日志文件。 以下是一个示例代码,演示如何使用Rotating File Sink记录日志: ```c++ #include <spdlog/spdlog.h> #include <spdlog/sinks/rotating_file_sink.h> class Logger { public: static Logger& instance() { static Logger logger; return logger; } template<typename... Args> void info(const char* fmt, const Args&... args) { m_logger->info(fmt, args...); } template<typename... Args> void warn(const char* fmt, const Args&... args) { m_logger->warn(fmt, args...); } template<typename... Args> void error(const char* fmt, const Args&... args) { m_logger->error(fmt, args...); } private: std::shared_ptr<spdlog::logger> m_logger; Logger() { // 创建Rotating File Sink,限制单个日志文件大小为10MB,最多保留5个日志文件 auto file_sink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>("log", 10 * 1024 * 1024, 5); // 创建logger,并添加Rotating File Sink std::vector<spdlog::sink_ptr> sinks; sinks.push_back(file_sink); m_logger = std::make_shared<spdlog::logger>("logger", begin(sinks), end(sinks)); // 设置logger的格式化方式和日志级别 spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%^%l%$] %v"); m_logger->set_level(spdlog::level::debug); } }; int main() { // 使用Logger类记录日志 Logger::instance().info("Hello, {}!", "world"); Logger::instance().warn("Warning: {} is empty!", "file"); Logger::instance().error("Error: {} not found!", "config"); return 0; } ``` 在这个示例代码中,我们首先创建了一个Rotating File Sink,限制单个日志文件大小为10MB,最多保留5个日志文件。然后,我们创建了一个logger,并添加了这个Rotating File Sink。最后,我们设置logger的格式化方式和日志级别。 在main函数中,我们通过Logger::instance()方法获取Logger类的单例对象,然后调用其方法记录日志。这些日志将被写入到log文件中,当log文件大小超过10MB时,将自动创建一个新的日志文件,并删除最旧的日志文件,以保留最多5个日志文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值