zoukankan      html  css  js  c++  java
  • net5 站点log4net日志处理-file、mongodb

    net5站点添加log4net日志处理,记录到txt和mongodb

    1、新建站点,修改为net5

     2、nuget上搜索log4net,或者使用集成的扩展Microsoft.Extensions.Logging.Log4Net.AspNetCore。这里使用了log4net。后续把log4日志集成保存到mongodb

     3、站点配增加log4net.config文件,并且再startup中增加加载配置文件的代码

    log4net.Config.XmlConfigurator.Configure进行加载

    4、统一增加loghelper类,用于方便调用,定义log对象

     5、代码中直接使用loghelper.info进行日志记录

    6、log4net.config配置文件如下:

      

    <?xml version="1.0" encoding="utf-8" ?>
    <log4net>
      <!--<appender name="DebugAppender2" type="log4net.Appender.DebugAppender" >
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
        </layout>
      </appender>-->
      <!--指定日记记录方式,以滚动文件的方式(文件记录)-->
      <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
        <!--日志路径-->
        <file value="loglogDebug" />
        <!--是否是向文件中追加日志-->
        <appendToFile value="true" />
        <!--log保留天数-->
        <param name= "MaxSizeRollBackups" value= "10"/>
        <!--每个文件最大1M-->
        <param name="maximumFileSize" value="1MB" />
        <!--日志根据日期滚动-->
        <param name="RollingStyle" value="Date" />
        <!--日志文件名格式为:logs_20080831.log-->
        <param name="DatePattern" value="&quot;logs_&quot;yyyyMMdd&quot;.log&quot;" />
        <!--日志文件名是否是固定不变的-->
        <param name="StaticLogFileName" value="false" />
        <!--布局-->
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <!--OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL-->
          <levelMin value="DEBUG" />
          <levelMax value="DEBUG" />
        </filter>
      </appender>
      <!--指定日记记录方式,以滚动文件的方式(文件记录)-->
      <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
        <!--日志路径-->
        <file value="loglogInfo" />
        <!--是否是向文件中追加日志-->
        <appendToFile value="true" />
        <!--log保留天数-->
        <param name= "MaxSizeRollBackups" value= "10"/>
        <!--每个文件最大1M-->
        <param name="maximumFileSize" value="1MB" />
        <!--日志根据日期滚动-->
        <param name="RollingStyle" value="Date" />
        <!--日志文件名格式为:logs_20080831.log-->
        <param name="DatePattern" value="&quot;logs_&quot;yyyyMMdd&quot;.log&quot;" />
        <!--日志文件名是否是固定不变的-->
        <param name="StaticLogFileName" value="false" />
        <!--布局-->
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <!--OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL-->
          <levelMin value="INFO" />
          <levelMax value="INFO" />
        </filter>
      </appender>
      <!--指定日记记录方式,以滚动文件的方式(文件记录)-->
      <appender name="WarnAppender" type="log4net.Appender.RollingFileAppender">
        <!--日志路径-->
        <file value="loglogWarn" />
        <!--是否是向文件中追加日志-->
        <appendToFile value="true" />
        <!--log保留天数-->
        <param name= "MaxSizeRollBackups" value= "10"/>
        <!--每个文件最大1M-->
        <param name="maximumFileSize" value="1MB" />
        <!--日志根据日期滚动-->
        <param name="RollingStyle" value="Date" />
        <!--日志文件名格式为:logs_20080831.log-->
        <param name="DatePattern" value="&quot;logs_&quot;yyyyMMdd&quot;.log&quot;" />
        <!--日志文件名是否是固定不变的-->
        <param name="StaticLogFileName" value="false" />
        <!--布局-->
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <!--OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL-->
          <levelMin value="WARN" />
          <levelMax value="WARN" />
        </filter>
      </appender>
      <!--指定日记记录方式,以滚动文件的方式(文件记录)-->
      <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
        <!--日志路径-->
        <file value="loglogError" />
        <!--是否是向文件中追加日志-->
        <appendToFile value="true" />
        <!--log保留天数-->
        <param name= "MaxSizeRollBackups" value= "10"/>
        <!--每个文件最大1M-->
        <param name="maximumFileSize" value="1MB" />
        <!--日志根据日期滚动-->
        <param name="RollingStyle" value="Date" />
        <!--日志文件名格式为:logs_20080831.log-->
        <param name="DatePattern" value="&quot;logs_&quot;yyyyMMdd&quot;.log&quot;" />
        <!--日志文件名是否是固定不变的-->
        <param name="StaticLogFileName" value="false" />
        <!--布局-->
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <!--OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL-->
          <levelMin value="ERROR" />
          <levelMax value="ERROR" />
        </filter>
      </appender>
      <root>
        <level value="ALL"/>
        <appender-ref ref="DebugAppender" />
        <appender-ref ref="InfoAppender" />
        <appender-ref ref="WarnAppender" />
        <appender-ref ref="ErrorAppender" />
      </root>
    </log4net>

    7、记录到文本文件的则到此结束

    8、配置记录到mongodb

    引用nuget:log4mongo-net。项目配置相对简单一些,可以直接github查找源代码进行自己的配置修改等

    引用完后,loghelper的logName对应改成配置文件定义的名称,不然会记录不到

    9、配置文件如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <!--声明一个名为“log4net”的自定义配置节-->
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
      </configSections>
      <!--log4net配置信息-->
      <log4net>
        <logger name="MongoDBLogger">
          <level value="ALL"/>
          <appender-ref ref="MongoDBAppender" />
        </logger>
        <appender name="MongoDBAppender" type="By56.Services.Common.Log.Mongo.MongoDBAppender, By56.Services.Common">
          <connectionString value="mongodb://root:123@192.168.1.14:27017/ByLog?authSource=admin" />
          <CollectionName value="logs_demo"/>
        </appender>
      </log4net>
    </configuration>

    这里CollectionName只能定义一个名字,不能按日期拆分等。如果需要,需要下载源码,自己编译处理。

    源码就四个文件。想自定义格式,可以找到MongoDBAppender.cs文件

     找到这个方法。这里定义了如果没有名字,则使用默认的logs

    可以自己在这个基础上进行修改,如添加{yyyyMMdd}格式,判断名称带有这个的,那么直接把这串替换成年月日方式,或者定义{yyyy}按年拆分格式,{yyyyMm}按月拆分格式

    具体解析这个格式的代码很简单,这里不再列出,直接在这个变量后面加上自己的逻辑就ok了

    注意:loghelper里面logName必须使用配置文件里面的MongoDBAppender,否则记录不成功

  • 相关阅读:
    git常用命令
    Expected Conditions的常用函数
    Docker(二十)-Docker容器CPU、memory资源限制
    Docker(十九)-Docker监控容器资源的占用情况
    ubuntu制作本地源
    ubuntu下安装软件的三种方法
    把windows的bat用好了,也很不错
    escape()、encodeURI()、encodeURIComponent()区别详解
    如何解决Ajax跨域问题-1
    五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) – 整理
  • 原文地址:https://www.cnblogs.com/Skyxu/p/14543673.html
Copyright © 2011-2022 走看看