在程序运行中,往往会出现各种出乎开发人员意料的异常或者错误,所以,记录详细的程序运行日志信息,有利于开发人员和运维人员排查异常信息,提高工作效率。而本菜鸟在大神推荐和指导下使用log4net这一插件工具,其中也学到了一些皮毛,所谓好记性不如烂笔头嘛。为此,将把这些心得体会记录下来,以免遗忘。同时,也为各位童鞋提供一些参考。在此声明,本文粗浅之极,大神莫入。

对于log4net有什么功能,这里就不赘述了。直接进入本文重点,也就是log4net的配置和简单使用。

首先,项目要引入log4net.dll。

然后,为项目增加配置文件——log4net.config

<log4net>
<!--日志配置,按日期保存-->
<appender name="DefaultLog" type="log4net.Appender.RollingFileAppender">
<file value="LogFiles\" />
<threshold value="WARN" />
<appendToFile value="true" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="30MB" />
<rollingStyle value="Composite" />
<datePattern value='yyyy-MM-dd".log"' />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<header value="-----------程序开始运行-----------
" />
<footer value="-----------程序结束运行----------- " />
<conversionPattern value="%date [%thread] %-5level %logger - %message%n" />
</layout>
</appender> <!--日志配置,按日期保存-->
<appender name="BaseLog" type="log4net.Appender.RollingFileAppender">
<file value="LogFiles\" />
<appendToFile value="true" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="30MB" />
<rollingStyle value="Composite" />
<datePattern value='yyyy-MM-dd".log"' />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<header value="-----------程序开始运行-----------
" />
<footer value="-----------程序结束运行----------- " />
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender> <!--控制台日志配置,按日期保存-->
<appender name="ConsoleLog" type="log4net.Appender.RollingFileAppender">
<file value="LogFiles\" />
<appendToFile value="true" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="30MB" />
<rollingStyle value="Composite" />
<datePattern value='yyyy-MM-dd".log"' />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<header value="-----------程序开始运行-----------
" />
<footer value="-----------程序结束运行----------- " />
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender> <!--窗体日志配置,按日期保存-->
<appender name="FromLog" type="log4net.Appender.RollingFileAppender">
<file value="LogFiles\" />
<appendToFile value="true" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="30MB" />
<rollingStyle value="Composite" />
<datePattern value='yyyy-MM-dd".log"' />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<header value="-----------程序开始运行-----------
" />
<footer value="-----------程序结束运行----------- " />
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender> <!-- 根级别,作为默认值 -->
<root>
<!--
OFF - 不输出任何日志
FATAL - 仅输异常
ERROR - 输出错误/异常信息
WARN - 输出警告/错误/异常信息
INFO - 输出普通/警告/错误/异常信息,默认
DEBUG - 输出调试/普通/警告/错误/异常信息
ALL - 与DEBUG相同
-->
<level value="WARN" />
<!--如果找不到对应的logger,会自动使用这个默认的日志-->
<appender-ref ref="DefaultLog" />
</root>
<logger name="MyLog.Base.Log">
<level value="DEBUG" />
<appender-ref ref="BaseLog" />
</logger>
<logger name="MyLog.Base.Console">
<level value="DEBUG" />
<appender-ref ref="ConsoleLog" />
</logger> <logger name="MyLog.Base.Form">
<level value="DEBUG" />
<appender-ref ref="FromLog" />
</logger>
</log4net>

在此,简单解释上面配置文件的使用,首先是<appender/>和<logger/>节点必须成对,每对配置,就是一个日志输出的配置。<appender-ref ref="BaseLog" />中属性ref的值对应<appender>的属性name的值。而<layout/>中的信息为日志输出的格式信息。其他的,就不一一解释了。

配置文件完成以后,为了让log4跑起来,还需要添加一个调用类——Logger。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net; namespace Base
{
public class Loggers
{
public static readonly ILog FormLogger = LogManager.GetLogger("MyLog.Base.Form"); public static readonly ILog ConsoleLogger = LogManager.GetLogger("MyLog.Base.Console"); public static readonly ILog BaseLogger = LogManager.GetLogger("MyLog.Base.Log");
}
}

值得注意的是,上面类中GetLogger("MyLog.Base.Log")中“MyLog.Base.Log”必须和配置文件中<loggger name="MyLog.Base.Log">的name属性值保持一致。
之后,为了让log4net跑起来,还需要添加代码来加载log4net配置文件,根据大神的传授,有两种加载方法:

1、在程序文件AssemblyInfo.cs中加上

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

2、在程序load事件中加上

 //读取log4net配置文件
log4net.Config.XmlConfigurator.Configure(new Uri(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "log4net.config"));

P.S:方法一我没有实现成功,可能是因为某些问题我没有发现,哪位童鞋知道原因可以告知我一下。不过方法二的使用成功了。

最后就是写入信息到文件的问题了,其实就一句代码:

Loggers.BaseLogger.Debug("Run Start");

同时,我们还可以根据日志输出的级别来选取输出的方法,日志的输出级别如下:

OFF   - 不输出任何日志
        FATAL - 仅输异常
        ERROR - 输出错误/异常信息
        WARN  - 输出警告/错误/异常信息
        INFO  - 输出普通/警告/错误/异常信息,默认
        DEBUG - 输出调试/普通/警告/错误/异常信息
        ALL   - 与DEBUG相同

本文完。

附注:log4net下载地址:点击打开链接

log4net日志的配置及简单应用的更多相关文章

  1. 关于log4net日志的配置流程

    最近又重新整理一下log4net日志的配置,现在记录一下流程和一些遇到的问题,以备后续使用,具体的配置参数等信息.此文无,见谅! 1. 下载log4net.dll文件(网上很多,随便找一个!) 2. ...

  2. C# 日志输出工具库—log4net 安装、配置及简单应用

    1.下载和安装 注意每次安装只是安装到本项目中,换了另一个项目需要再次安装和配置. 我使用的是Visual Studio 2013 社区版,在tools中找到NuGet包管理. 搜索log4net并点 ...

  3. ASP.NET Log4Net日志的配置及使用,文件写入

    Log4net是Apache log4j框架在Microsort.NET平台实现的框架. 帮助程序员将日志信息输出到各种目标(控制台,数据库,文件等) 1.新建一个ASP.NET项目 2.新建一个 l ...

  4. Log4Net日志的配置

    <configuration>  <configSections>    <section name="log4net" type="log ...

  5. Yii1.1框架关于日志的配置的简单使用

    最近开始接触新项目,新项目用的框架是Yii1.1版本的,通过看框架文档大致熟悉了解了Yii在日志方面的使用. 首先在protected/config/main.php配置文件中加入日志相关配置,如下图 ...

  6. Log4net日志GUI配置工具

    关于log4net的配置文章在园子里真的很多,但是有关GUI界面配置的文章确定太少,改写了一个以前很早的工具 以前的那个有很多的问题,这个基本的大的问题没有,可能一个小问题还是需要修改下,基本功能肯定 ...

  7. Log4net 日志记录配置信息

    <log4net> <!--配置日志的级别,低于此级别的就不写到日志里面去 OFF.FATAL.ERROR, WARN, INFO, DEBUG, ALL --> <ro ...

  8. [转]Log4Net日志插件配置详解

    log4net是一款优秀的第三方日志框架,可以很容易的加载到开发项目中(引用log4net的dll,再配置些基本参数即可),帮助程序员把日志信息输出到各种不同的目标,常见的有文本.数据库.window ...

  9. log4net日志输出配置即输出到文件又输出到visual studio的output窗口

    <configuration> <configSections> <section name="log4net" type="log4net ...

随机推荐

  1. 21. 无法执行该操作,因为链接服务器”Server_202”的 OLE DB 访问接口 “SQLNCLI10″ 无法启动分布式事务”

    无法执行该操作,因为链接服务器”Server_202”的 OLE DB 访问接口 “SQLNCLI10″ 无法启动分布式事务” 原因:调用存储过程的方式有问题,必须用JDBC方式调用存储过程才可以正常 ...

  2. Silverlight第三方控件专题

    原文http://www.cnblogs.com/nasa/archive/2008/12/01/1344927.html 这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏 ...

  3. tomcat oracle 连接池配置

    <?xml version='1.0' encoding='utf-8'?> <Context displayName="zcgl" docBase=" ...

  4. poj1580---欧几里得算法(辗转相除法)

    #include<stdio.h> #include<string.h> #include<string.h> ],str2[]; int len; int cal ...

  5. 适配器模式—STL中的适配器模式分析

    适配器模式通常用于将一个类的接口转换为客户需要的另外一个接口,通过使用Adapter模式能够使得原本接口不兼容而不能一起工作的类可以一起工作. 这里将通过分析c++的标准模板库(STL)中的适配器来学 ...

  6. python-聊聊反射

    反射 对于初学python可能较难理解,但反射是非常有用. 试想一下,当别的程序传入给你写的这段代码一个变量(var=“math”),这个变量是一个字符串,这个字符串是一个模块或者一个模块下的某个方法 ...

  7. BCGControlBar使用方法(转)

    一.   关于BCGControlBar. BCGControlBar是一个基于MFC的扩展库,您可以通过完全的用户化操作构成一些类似于Microsoft Office 2000/XP/2003和Mi ...

  8. java 正则表达式抽取

    package com.achun.test; import java.util.regex.Matcher;import java.util.regex.Pattern; public class ...

  9. Oracle操作数据库oracleHelper

    1 Oracle OracleHelper //============================================================================ ...

  10. class A<T> where T:class 这个泛型类中的Where T:class什么意思

    这是类型参数约束,.NET支持的类型参数约束有以下五种: where T : struct                               T必须是一个结构类型 where T : cla ...