log4net创建系统日志的详细步骤

 更新时间:2021年9月22日 10:13  点击:1419

前言
用户可以从http://logging.apache.org/log4net/下载log4net的源代码。解压软件包后,在解压的src目录下将log4net.sln载入Visual Studio .NET,编译后可以得到log4net.dll。用户要在自己的程序里加入日志功能,只需将log4net.dll引入工程即可。

在项目中配置

第一步:首先在项目中引用log4net.dll文件。
第二步:在Web.config文件中进行添加configSections的节点

复制代码 代码如下:

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    <!--配置一个结点 名称为log4net-->
  </configSections>

第三步:添加log4net配置节点

复制代码 代码如下:

<log4net debug="true">
</log4net>

然后在log4net节点下添加
写入本地文本文件中的配置

复制代码 代码如下:

         <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
             <!--定义的是日志记录到文件的附着器 name表示该附着器的名称-->        
             <!--在log4net中还有一个附着器RollingFileAppender 它表示会循环生成很多文件,举例来说,就是设置一共可以生成20个文件,每个文件的大小为2K,那么如果第一个、-->         
             <!--文件的大小超过2K,就会自动创建一个按顺序命名的文件-->
             <param name="File" value="c:\Log\DBLog.txt" /> <!--日志记录的存在路径-->
             <param name="AppendToFile" value="true" /><!--为true就表示日志会附加到文件,为false,则会重新创建一个新文件-->
             <layout type="log4net.Layout.PatternLayout">
               <!--输出内容控制-->
               <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
             </layout>    
         </appender>

注释很清楚,就不解释了。
写入指定邮箱的配置

复制代码 代码如下:

        <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
        <!--设置发送电子邮件的附着器-->
            <authentication value="Basic" />
            <to value="518@qq.com" />
            <from value="a@163.com" />
            <username value="帐号" />
            <password value="密码" />
            <subject value="程序异常日志记录邮件发送" />
            <smtpHost value="smtp.163.com" />
            <bufferSize value="512" />
            <lossy value="true" />
            <evaluator type="log4net.Core.LevelEvaluator">
               <threshold value="debug"/> 
            </evaluator>
            <layout type="log4net.Layout.PatternLayout">
                 <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />   
            </layout>
        </appender>

通过的是163邮箱服务器发送
将日志写入数据库的相关配置,还要建立一张对应的数据库表

复制代码 代码如下:

         <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
             <!--存储到数据库的操作-->
             <bufferSize value="10"/>
             <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
             <connectionString value="server=.;database=Log4Net;user id=sa;password=saa"/>
             <commandText value="INSERT INTO _Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date,                                @log_thread, @log_level, @log_logger, @log_message, @log_exception)"/>
             <parameter>
                 <parameterName value="@log_date"/>
                 <dbType value="DateTime"/>
                 <layout type="log4net.Layout.RawTimeStampLayout"/><!--可以认为是记录日志的时间-->
             </parameter>
             <parameter>
                 <parameterName value="@log_thread"/>
                 <dbType value="String"/>
                 <size value="255"/>
                 <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%thread"/><!--记录日志时的线程号-->
                </layout> 
             </parameter>
             <parameter>
                 <parameterName value="@log_level"/>
                 <dbType value="String"/>
                 <size value="50"/>
                 <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%level"/><!--日志级别-->
                 </layout>
             </parameter>
             <parameter>
                 <parameterName value="@log_logger"/>
                 <dbType value="String"/>
                 <size value="255"/>
                 <layout type="log4net.Layout.PatternLayout">
                     <conversionPattern value="%logger"/><!--哪个记录器存储的该日志-->
                 </layout>
             </parameter>
             <parameter>
                 <parameterName value="@log_message"/>
                 <dbType value="String"/>
                 <size value="4000"/>
                 <layout type="log4net.Layout.PatternLayout">
                     <conversionPattern value="%message"/><!--日志信息-->
                 </layout>
             </parameter>
             <parameter>
                 <parameterName value="@log_exception"/>
                 <dbType value="String"/>
                 <size value="255"/>
                 <layout type="log4net.Layout.ExceptionLayout"/><!--异常信息-->
             </parameter> 
         </appender>

另外一种写入文件的方式配置

复制代码 代码如下:

         <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
             <!--这个就是我在上面提到的RollingFileAppender-->
             <file value="example.log" /><!--文件名称-->
             <appendToFile value="false" /><!--会创建新文件,一般设置为true,这里设置为false,是为了看到创建的文件-->
             <maximumFileSize value="1KB" /><!--文件大小-->
             <maxSizeRollBackups value="20" /><!--创建最大文件数-->
             <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%level %thread %logger - %message%newline" />
             </layout>
         </appender>

在log4net节点中还有两个节点

复制代码 代码如下:

      <logger name="Loggering">
        <level value="Warn"/>
        <appender-ref ref="ADONetAppender"/>
      </logger>
      <root>
        <level value="info" />
          <!--<appender-ref ref="ADONetAppender" />-->
          <appender-ref ref="SmtpAppender"/>
          <!--<appender-ref ref="LogFileAppender"/>
          <appender-ref ref="ColoredConsoleAppender"/>
          <appender-ref ref="EventLogAppender"/>
          <append-ref ref="NetSendAppender"/>
          <appender-ref ref="RollingFile"/>-->
      </root>

在框架的体系里,所有的日志对象都是根日志(root logger)的后代。 因此如果一个日志对象没有在配置文件里显式定义,则框架使用根日志中定义的属性。在<root>标签里,可以定义level级别值和Appender的列表。如果没有定义LEVEL的值,则缺省为DEBUG。可以通过<appender-ref>标签定义日志对象使用的Appender对象。<appender-ref>声明了在其他地方定义的Appender对象的一个引用。在一个logger对象中的设置会覆盖根日志的设置。而对Appender属性来说,子日志对象则会继承父日志对象的Appender列表。这种缺省的行为方式也可以通过显式地设定<logger>标签的additivity属性为false而改变。
那么上面就会有数据库日志的写入和邮箱的写入
在Global.asax文件初始化配置

复制代码 代码如下:

        protected void Application_Start()
        {
            //读取日志  如果使用log4net,应用程序一开始的时候,都要进行初始化配置
            log4net.Config.XmlConfigurator.Configure();

            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);
        }

调用

复制代码 代码如下:

        private static readonly log4net.ILog log = log4net.LogManager.GetLogger("Loggering");
        public ActionResult About()
        {
             log.Info("log日志信息");
             log.Debug("debug信息");
             log.Error("error信息");
             log.Warn("warn信息");
             Exception ex = new Exception("测试的异常信息");
             log.Fatal("fatal信息", ex);
            return View();
        }

运行一下


Log4net中 DEBUG、INFO、WARN、ERROR 区分得很好。正常的 DEBUG、INFO 的日志, 就让它记录在 日志文件里面吧。
对于 WARN、ERROR 级别的日志, 记录到日志文件的同时, 顺便发送电子邮件到我的信箱里面。 这样一来, 我也不必每天去看日志文件, 二来,出了什么问题, 能及时通过电子邮件得到通知。
数据库结构

复制代码 代码如下:

create database Log4Net
go
use Log4Net
create table _log
(
    id int identity(1,1) primary key not null,
    date datetime null,
    thread int null,
    level varchar(10) null,
    logger varchar(20) null,
    Message varchar(100) null,
    Exception varchar(100) null
)

还待优化,有空了再来琢磨琢磨。

[!--infotagslink--]

相关文章

  • C#控制台程序使用Log4net日志组件详解

    这篇文章主要为大家详细介绍了C#控制台程序使用Log4net日志组件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • JWT+Log4net配置与使用详解

    这篇文章主要介绍了JWT+Log4net配置与使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2021-09-22
  • .net下log4net使用方法详解

    这篇文章主要为大家详细介绍了.net下log4net使用方法,以控制台应用程序为例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • ASP.NET MVC中使用log4net的实现示例

    这篇文章主要介绍了ASP.NET MVC中使用log4net的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • asp.net log4net的使用方法

    这篇文章主要介绍了asp.net log4net的使用,需要的朋友可以参考下...2021-09-22
  • .net core整合log4net的解决方案

    这篇文章主要给大家介绍了关于.net core整合log4net的解决方案,文中通过图文介绍的非常详细,对大家学习或者使用.net core具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • MVC使用Log4Net进行错误日志记录学习笔记4

    这篇文章主要为大家详细介绍了MVC使用Log4Net进行错误日志记录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • .net简单使用Log4net的方法(多个日志配置文件)

    log4net是.net中常用的一个日志记录工具,下面这篇文章主要给大家介绍了关于.net简单使用Log4net的方法(多个日志配置文件),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧...2021-09-22
  • log4net教程日志分类和自动维护示例

    log4net能不能按照功能分类呢?如果通过配置不同的logger,然后功能根据不同的LoggerName加载Ilog实例,是可以做到。但由于这些功能的log配置差异性极小,也许仅仅就是文件名不同。于是想通过代码进行配置,下面把方法分享如下...2021-09-22
  • log4net配置和使用方法分享

    这篇文章主要介绍了log4net配置和使用方法,大家参考使用吧...2021-09-22
  • C#中四步轻松使用log4net记录本地日志的方法

    下面小编就为大家分享一篇C#中四步轻松使用log4net记录本地日志的方法,具有很好的参考价值。希望对大家有所帮助...2020-06-25
  • Log4net日志记录组件的使用步骤详解和下载

    Log4net日志记录组件的使用步骤详解,需要的朋友可以参考一下...2021-09-22
  • C# log4net使用案例详解

    这篇文章主要介绍了C# log4net使用案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...2021-08-14
  • log4net创建系统日志的详细步骤

    log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是简单的介绍如何在Visual Studio2010(Asp.Net Mvc3.0)中使用log4net快速创建系统日志,如何扩展以输出自定义字段...2021-09-22
  • 详解.Net core2.0日志组件Log4net、Nlog简单性能测试

    这篇文章主要介绍了详解.Net core2.0日志组件Log4net、Nlog简单性能测试,比较log4net、nlog的文件写入性能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • C#实现Log4Net日志分类和自动维护实例

    这篇文章主要介绍了C#实现Log4Net日志分类和自动维护,实例讲述了Log4Net日志分类和自动维护的实现方法,并提供了完整的实例供大家参考学习,需要的朋友可以参考下...2020-06-25
  • Log4Net 日志配置[附带源码下载]

    这篇文章主要介绍了Log4Net 日志配置[附带源码下载],需要的朋友可以参考下...2020-06-25
  • .NET Core下使用Log4Net记录日志的方法步骤

    这篇文章主要介绍了.NET Core下使用Log4Net记录日志的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • ASP.NET Core使用Log4net实现日志记录功能

    这篇文章介绍了ASP.NETCore使用Log4net实现日志记录功能的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-03-09