在程序运行中,往往会出现各种出乎开发人员意料的异常或者错误,所以,记录详细的程序运行日志信息,有利于开发人员和运维人员排查异常信息,提高工作效率。而本菜鸟在大神推荐和指导下使用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. PhotoShop-CS4使用-----如何对psd进行简单切图

    一.如何快速截图 1.如果图片为psd样式   2.要用放大器放大该图,选择放大器,放大后如图 3.开始切图  以其中一个为例,选中你所要选择切的图片 4. 选中后 5.选择文件---新建   6.此 ...

  2. “Options模式”下的配置是如何绑定为Options对象

    “Options模式”下的配置是如何绑定为Options对象 配置的原子结构就是单纯的键值对,并且键和值都是字符串,但是在真正的项目开发中我们一般不会单纯地以键值对的形式来使用配置.值得推荐的做法就是 ...

  3. MFC上下浮动与渐入渐出消息提示框实现

    类似QQ与360软件,消息提示有两种.上下浮动.渐入渐出. 1.上下浮动提示框实现 机制,定时器响应上下浮动消息. 主要API:MoveWindow. 源码如下UpDownTipDlg.h.UpDow ...

  4. js的replace的用法;

    obj.replace("需要替换的字符串","替换后的字符串")

  5. jQuery $.each用法比较详细了

    以下内容非原创,来自百度文库http://wenku.baidu.com/view/4796b6145f0e7cd18425368e.html 通过它,你可以遍历对象.数组的属性值并进行处理. 使用说 ...

  6. (十一年)unity4.6得知Ugui中国文献-------参考-UGUI Visual Components

     大家好,我是太阳广东. 转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unity ...

  7. Swift利用闭包(closure)来实现传值-->前后两个控制器的反向传值

    一.第一个界面 // Created by 秦志伟 on 14-6-13. import UIKit class ZWRootViewController: UIViewController { in ...

  8. iOS UISearchBar学习笔记

    UISearchBar 是一个搜索控件,它提供了一个文本输入框,一个查找button,一个书签button.一个取消button.我们须要使用UISearchBarDelegate代理来进行查找工作. ...

  9. li span兼容性问题

    li与span的搭配使用所产的浏览器兼容性问题 1.ls两位,设定了width还是没用.2.总结了一下就是,里面的标签漂浮以后,就不能撑起外层的容器了. 3.li要设至少一个宽度或高度,还要加上ove ...

  10. C# 文件帮助类

    using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; us ...