• log4net


    一、安装

    右击项目,Manage Nuget Packages,搜索并安装log4net类库文件:

    二、配置

    2.1 log4net.config文件

    项目右击,添加新文件,Application Configuration File配置文件,命名为log4net.config,内容共分为两部分 configSections 和 log4net,参考代码如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
      </configSections>

      <log4net debug="true">
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <!--file可以指定具体的路径 eg: D:\Share\log\MesClient.log。不指定的话log被生成在项目的bin/Debug 或者 bin/Release目录下-->
          <file value="log/MesClient.log" />
          <!--是否追加到文件-->
          <appendToFile value="true" />
          <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
          <rollingStyle value="Size" />
          <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
          <maxSizeRollBackups value="20" />
          <!--每个文件的大小,超出大小后在所有文件名后自动增加正整数重新命名。可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志-->
          <maximumFileSize value="10MB" />
          <!--是否只写到一个文件中-->
          <staticLogFileName value="true" />
          <layout type="log4net.Layout.PatternLayout">
            <!--指定log的格式 : %date记录时间 %-5level日志级别 %logger记录类 %message消息内容 %newline换行-->
            <conversionPattern value="[%date] - %-5level - %logger [%M] -- %message%newline" />
          </layout>
          <param name="Encoding" value="utf-8" />
        </appender>
        <root>
          <level value="DEBUG" />
          <!--指定将此级别及以上的log打印到log文件中-->
          <appender-ref ref="RollingLogFileAppender" />
        </root>
      </log4net>
    </configuration>

    更加详细全面的配置说明请参考:非常完善的Log4net详细说明 - CSDN博客 https://blog.csdn.net/binnygoal/article/details/79557746

    2.2 AssemblyInfo.cs文件

    在Properties下的AssemblyInfo.cs文件中添加一行代码:

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

    效果如图:

    三、应用

    文件中首先引用 using log4net;

    在类中实例化logger对象,不同的类中要分别实例化logger对象,所有的logger会输出到同一个日志文件中。

    public ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

     日志的类型和等级包括:OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALL

     FATAL(致命错误):记录系统中出现的能使用系统完全失去功能,服务停止,系统崩溃等使系统无法继续运行下去的错误。例如,数据库无法连接,系统出现死循环。

     ERROR(一般错误):记录系统中出现的导致系统不稳定,部分功能出现混乱或部分功能失效一类的错误。例如,数据字段为空,数据操作不可完成,操作出现异常等。

     WARN(警告):记录系统中不影响系统继续运行,但不符合系统运行正常条件,有可能引起系统错误的信息。例如,记录内容为空,数据内容不正确等。

     INFO(一般信息):记录系统运行中应该让用户知道的基本信息。例如,服务开始运行,功能已经开户等。

     DEBUG (调试信息):记录系统用于调试的一切信息,内容或者是一些关键数据内容的输出。

     用法一、直接输出信息时:

    logger.Info("-------------------- Machine Server is starting --------------------");

     用法二、输出异常信息时,写在try catch中:

    catch (Exception e)
    {
          logger.ErrorFormat("Exception when GetServerStatus: IP:[{0}] message:{1}", m_IP, e.Message);
    }

     另外,有无Format的区别是(拿Info和InfoFormat举例):

    Info的重载方法只有两种,InfoFormat的重载方法有多种,因此InfoFormat的适用性更大一点。

     比如以下四个入参的情况就只能使用InfoFormat:

    logger.InfoFormat("Storage:[{0}] Status changed: [{1}]->[{2}]", StorageNo, Status.ToString(), value.ToString());

    四、参考

     C# 日志输出工具库—log4net 安装、配置及简单应用 https://www.cnblogs.com/oucsheep/p/9467932.html

     C#教程之浅谈Log4net在项目中如何记录日志https://www.xin3721.com/ArticlecSharp/c13233.html(很全面)

     C#使用log4net记录日志https://www.cnblogs.com/vichin/p/6022612.html

  • 相关阅读:
    什么是字典序算法?
    安装使用zookeeper
    用最快速度将0*10范围内的数进行排序
    自定义schema 流程
    dubbo原理
    jvm 线上命令
    如何实现抢红包算法?
    GC Root 对象有哪些
    Jquery动态绑定事件处理函数 bind / on / delegate
    找出数组中的最小值(es5/es6)
  • 原文地址:https://www.cnblogs.com/zwh1993/p/10750134.html
Copyright © 2020-2023  润新知