第一篇博客关于Log4net的配置记录

说明:本程序演示如何利用log4net记录程序日志信息。log4net是一个功能著名的开源日志记录组件。利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。并且我们还可以记载控制要记载的日志级别,可以记载的日志类别包括:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。要想获取最新版本的log4net组件库,可以到官方网站http://logging.apache.org/log4net/下载。现在的最新版本是1.2.10。

下面的例子展示了如何利用log4net记录日志 。

首先从官方网站下载最近版本的log4net组件,现在的最新版本是1.2.10。在程序中我们只需要log4net.dll文件就行了,添加对log4net.dll的引用,就可以在程序中使用了。

接着我们配置相关的配置文件(WinForm对应的是*.exe.config,WebForm对应的是*.config),本实例中是控制台应用程序,配置如下(附各配置的说明):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
  </configSections>
  <appSettings>
  </appSettings>
  <log4net>
    <!--定义输出到文件中-->
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <!--定义文件存放位置-->
      <file value="D:/log4netfile.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd-HH:mm:ss" />
      <layout type="log4net.Layout.PatternLayout">
        <!--每条日志末尾的文字说明-->
        <footer value="by 周公" />
        <!--输出格式-->
        <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />
      </layout>
    </appender>
    <!--定义输出到控制台命令行中-->
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <!--定义输出到windows事件中-->
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <!--定义输出到数据库中,这里举例输出到Access数据库中,数据库为C盘的log4net.mdb-->
    <appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
      <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb" />
      <commandText value="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)" />
      <!--定义各个参数-->
      <parameter>
        <parameterName value="@logDate" />
        <dbType value="String" />
        <size value="240" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@thread" />
        <dbType value="String" />
        <size value="240" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%thread" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@logLevel" />
        <dbType value="String" />
        <size value="240" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%level" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@logger" />
        <dbType value="String" />
        <size value="240" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%logger" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="240" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message" />
        </layout>
      </parameter>
    </appender>
    <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
    <root>
      <!--文件形式记录日志-->
      <appender-ref ref="LogFileAppender" />
      <!--控制台控制显示日志-->
      <appender-ref ref="ConsoleAppender" />
      <!--Windows事件日志-->
      <appender-ref ref="EventLogAppender" />
      <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉
      <appender-ref ref="AdoNetAppender_Access" />
      -->
    </root>

  </log4net>
</configuration>
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using log4net;

//注意下面的语句一定要加上,指定log4net使用.config文件来读取配置信息
//如果是WinForm(假定程序为MyDemo.exe,则需要一个MyDemo.exe.config文件)
//如果是WebForm,则从web.config中读取相关信息
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Log4NetDemo
{
    /// <summary>
    /// 说明:本程序演示如何利用log4net记录程序日志信息。log4net是一个功能著名的开源日志记录组件。
    /// 利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库中(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)。
    /// 下面的例子展示了如何利用log4net记录日志
    /// 作者:周公
    /// 时间:2008-3-26
    /// 首发地址:http://blog.csdn.net/zhoufoxcn/archive/2008/03/26/2220533.aspx
    /// </summary>
    public class MainClass
    {
        public static void Main(string[] args)
        {
            //Application.Run(new MainForm());
            //创建日志记录组件实例
            ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
            //记录错误日志
            log.Error("error",new Exception("发生了一个异常"));
            //记录严重错误
            log.Fatal("fatal",new Exception("发生了一个致命错误"));
            //记录一般信息
            log.Info("info");
            //记录调试信息
            log.Debug("debug");
            //记录警告信息
            log.Warn("warn");
            Console.WriteLine("日志记录完毕。");
            Console.Read();
        }
    }
}

  控制台结果:

日志文件输出:

时间: 2024-10-21 22:40:14

第一篇博客关于Log4net的配置记录的相关文章

我的第一篇博客——oracle数据库安装

来分享我的第一篇博客,关于oracle数据库安装. 文章也是借鉴其他博主发表的文章内容,只是自己用来做下记录,以便日后之需. 下面进入正题...... 方法/步骤 1.大家可以根据自己的操作系统是多少位(32位或64位)的,到官网下载相应的安装程序,如下图所示.有一点需要注意,Oracle的安装程序分成2个文件,下载后将2个文件解压到同一目录即可.  (这里下载的安装程序需要到oracle官网上下载:https://www.oracle.com/database/technologies/ora

第一篇博客——基于数组的优先队列(java版)

看过园子里和CSND上那么多大牛精彩的博客后,早就按捺不住想亲手写上几篇.奈何每次坐在电脑前准备敲字的时候,立马赶到浑身不自在,无从下手.实在是因为自高考之后,大学以来,本人几乎就再没动笔写过一篇文字,写作水平退化实在严重.今天鼓起勇气开始写作博客,一方面希望通过多写慢慢地找回写作的感觉,一方面也希望通过博客和大家多多交流,共同进步. 既然是第一次试手,就写个简单易懂的内容——优先队列. 话不多说,先上代码. 1 /** 2 * @author Mr Left 3 * @version 1.0

我的第一篇博客记录我的IOS生涯

这是我的第一篇博客,只为了记录我在IOS开发旅程中得成长之路,一直觉得能发表几百篇的都是大牛,一直都是我崇拜的对象,我希望现在的一小步能成为将来的一大步,坚持每天发表一篇博文,养成一个良好的每天学习新知识的习惯,希望多年以后点开这第一篇博客能感叹当初的自己是多么的幼稚,但也感谢当年的坚持!come on!活着就是为了改变世界!

第一篇博客:一个双色球游戏 、以及个人介绍

一.双色球小游戏 双色球类(6红1蓝): 1 package top.liaoyingpeng.bean; 2 3 import java.util.Arrays; 4 5 public class Balls { 6 private int[] red = new int[6]; 7 private int blue; 8 private BallBox makeBy; 9 10 // 全机器生成 11 protected Balls(BallBox bx) { 12 makeBy = bx;

第一篇博客,希望是一个好的开始

博客园"占座位" 因为学习专业的原因,经常浏览博客学习和解惑.在前辈们的作品中学到了很多,也感受到了很多.通过博客的方式去分享知识和记录自己的成长.这种积极向上的,乐于分享的精神,让我很受鼓舞.我时刻准备着加入这一大军的行列.于是我就注册了个账号,呵呵. 第一篇博客 经常会突发奇想的计划着怎么怎么样,却在行动的时候虎头蛇尾了,很难坚持作下去.这或许是很多人都存在的问题.在别人博客上看到:"或许写博客是一个不错的方法".通过博客,经常来记录一下自己的学习,分享一下自己

第一篇博客《import tensorflow的问题解决》

在jupyter notebook中死活无法import jupyter 搞了很久,最后是解决了,过程如下: 1)安装anaconda3 4.2.0版本 2)解决activate tensorflow问题 3)解决import tensorflow问题 以下就两个方面进行详细记录: 1)activate tensorflow失败问题 https://www.cnblogs.com/lvsling/p/8672404.html 根据以上文章操作,解决了激活tensorflow的问题,上述文章我是只

第一篇博客当测试,codeigniter遇到坑了

第一篇博客当测试,codeigniter遇到坑了,耽误了1天时间,才弄明白 如果你发现无论输入什么 URL 都只显示默认页面的话,那么可能是你的服务器不支持 PATH_INFO 变量,该变量用来提供搜索引擎友好的 URL . 解决这个问题的第一步是打开 application/config/config.php 文件, 找到 URI Protocol 信息,根据注释提示,该值可以有几种不同的设置方式, 你可以逐个尝试一下. 如果还是不起作用,你需要让 CodeIgniter 强制在你的 URL

Hello World —— 我的第一篇博客

2019.2.22,我开始写起了属于我的博客,没有什么花里胡哨的想法,目的很简单:就想将自己在学习过程中的每一阶段所学到的知识.所遇到的问题用文字的方式记录下来,方便以后回头看看的时候,能知道自己在这个行业里处于一个什么阶段.好了,废话不多说,第一篇博客,不谈技术,先聊聊自己的一些想法吧.我最喜欢的一件事就是在晚上,一个人静静地坐在那里,看着满天繁星,思考着自己的问题,那时候很安静,很孤独.不过我喜欢孤独.技术也是这样,学技术的道路是孤独,是寂寞的,你要靠你自己一点点提升,难受了你要靠你自己挺过

第一篇博客------致自己

我为什么在博客园开博? 2019年5月10日,我在博客园写下自己的第一篇博客,用以记录和促进自己的技术成长.同时也希望自己的记录能给需要的人带来点启示. 我的博客将由以下几个分类的文章组成: 编程语言:到目前为止开发主要用Java,涉猎Java.Python.JQuery.js等.这个分类将会分享一些编程过程中理解到的小trick.值得借鉴的代码等. Lunix操作:学号Lunix操作真的是会收益终身的事情,而且装逼属性Max.这个模块主要会分享一些Lunix相关的技巧. 数据库:数据库是开发过