zoukankan      html  css  js  c++  java
  • .Net使用log4net 记录日志

    在项目开发时,你可能想记录一些应用程序日志,这些日志包括:应用程序执行流,用户行为数据或者程序的一些报错信息,在 .NET 世界中有非常多的日志框架,然而 log4net 是目前为止最流行的一款日志框架,它是一款开源的项目(java 的 log4j 开源移植版),并且可以将应用程序日志输出到不同的 target 中,eg:数据库,文件,redis,elasticsearch 等等。

    安装 log4net

    使用 NuGet Package Manager 是安装 log4net 最简单也是最快速的方式,假设你已经在 Visual Studio 中创建了一个 Console Application 项目,你可以通过 Nuget Manager 按照下面的步骤一步一步的进行安装。

    • 在 Solution Explorer Window 的 project 上点击右键。

    • 点击 Manage NuGet Packages

    • 点击 Online 并且在输入框中搜索 log4net

    • 然后选择你需要安装的 log4net 包。

    • 点击 Install 开始进行包安装

    可以参考下面的图:

    稍等片刻你会在 NuGet Package Manager 中观察到 log4net 已经成功安装,同时你应该可以观察到 log4net 已成功添加到 project项目的 引用列表中了,如下图:

    配置 log4net

    现在你的 log4net 已经被成功安装,project 的 Properties 文件夹下有一个 AssemblyInfo.cs 文件,在这个文件中增加如下行,如果你没有一些自定义的配置,可以不用考虑下面的方式。


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

    作为替代方案,你可以将 log4net 的配置直接送到 app.config 或者 web.config 中,使用如下配置:


    [assembly: log4net.Config.XmlConfigurator(Watch = true)]

    有时候,你可能不想把 log4net 的配置信息放在 app.config 或者 web.config 中,这时候你可以专门指定一个配置文件,比如:log4net.config。


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

    接下来就需要在 app.config 或者 web.config 中指定 log4net 的一些详细配置信息了,假定你使用的是 console 应用程序,在 configSections 节点中新增一个名称为 log4net 的 section 节点,如下代码所示:


    <configSections>
       <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>

    现在,你可以在 <configSections/> 节点之后添加一个 <log4net></log4net> 节点,在 <log4net></log4net> 节点内部添加如下的详细配置信息。


    <log4net>
       <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
         <param name="File" value="C:\Projects\Personal\IDG\IDG.log"/>
         <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
         <appendToFile value="true" />
         <rollingStyle value="Size" />
         <maxSizeRollBackups value="10" />
         <maximumFileSize value="1MB" />
         <staticLogFileName value="true" />
         <layout type="log4net.Layout.PatternLayout">
           <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
         </layout>
       </appender>
       <root>
         <level value="ALL" />
         <appender-ref ref="LogFileAppender" />
       </root>
    </log4net>

    这就是 log4net 的所有配置,接下来简单浏览下这些配置信息,这里我在 <appender /> 属性中指定了 logger 的 name 和 type,在这个例子中我使用的是RollingFileAppender,其实 log4net 支持很多种的 Appender,比如 AdoNetAppender,AspNetTraceAppender,ConsoleAppender 等等,更多的 Appender 设定可以看看这个链接:http://logging.apache.org/log4net/release/config-examples.html

    使用 log4net

    接下来可以写代码了,用 LogManager 类的 静态方法 GetLogger 来创建一个实例,这个实例实现了 ILog 接口,如下代码所示:


    private static readonly log4net.ILog log = 
    log4net.LogManager.GetLogger
    (System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    现在你可以使用这个 log 实例去记录日志到你指定的 target 中,下面的代码段就展示了如何利用 log 去记录日志。


    log.Debug("This is a Debug message");
    log.Info("This is a Info message");
    log.Warn("This is a Warning message");
    log.Error("This is an Error message");
    log.Fatal("This is a Fatal message");

    下面是一个完整的代码清单,使用 log4net 去记录异常信息到一个 text 文本中。


    class Program
       {
           static readonly log4net.ILog log =
           log4net.LogManager.GetLogger
    (System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
           static void Main(string[] args)
           {
               try
               {
                   throw new Exception("This is test message...");
               }
               catch(Exception ex)
               {
                   log.Error(ex.Message);
               }          
               Console.Read();
           }
       }

    执行完上面的程序之后,IDG.log 日志文件就会生成,里面会有一条我指定的异常信息,再配上一条当时记录日志的时间,这个时间信息非常重要,最后,除了本篇介绍的用 配置文件 的形式进行配置,你也可以通过编程的方式进行 log4net 配置。

  • 相关阅读:
    第53章:高级反调试技术
    第6章:加密算法
    第5章:演示版保护技术——光盘检测、只运行一个实例
    第5章:演示版保护技术——网络验证
    第5章:演示版保护技术——菜单功能限制、KeyFile保护
    第5章:演示版保护技术——时间限制
    第5章:演示版保护技术——警告窗口
    第5章:演示版保护技术——序列号保护方式
    第52章:动态反调试技术
    laravel 路由隐式绑定
  • 原文地址:https://www.cnblogs.com/cuigzh/p/14033979.html
Copyright © 2011-2022 走看看