log4net日志的配置及简单应用
在程序运行中,往往会出现各种出乎开发人员意料的异常或者错误,所以,记录详细的程序运行日志信息,有利于开发人员和运维人员排查异常信息,提高工作效率。而本菜鸟在大神推荐和指导下使用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日志的配置及简单应用的更多相关文章
- 关于log4net日志的配置流程
最近又重新整理一下log4net日志的配置,现在记录一下流程和一些遇到的问题,以备后续使用,具体的配置参数等信息.此文无,见谅! 1. 下载log4net.dll文件(网上很多,随便找一个!) 2. ...
- C# 日志输出工具库—log4net 安装、配置及简单应用
1.下载和安装 注意每次安装只是安装到本项目中,换了另一个项目需要再次安装和配置. 我使用的是Visual Studio 2013 社区版,在tools中找到NuGet包管理. 搜索log4net并点 ...
- ASP.NET Log4Net日志的配置及使用,文件写入
Log4net是Apache log4j框架在Microsort.NET平台实现的框架. 帮助程序员将日志信息输出到各种目标(控制台,数据库,文件等) 1.新建一个ASP.NET项目 2.新建一个 l ...
- Log4Net日志的配置
<configuration> <configSections> <section name="log4net" type="log ...
- Yii1.1框架关于日志的配置的简单使用
最近开始接触新项目,新项目用的框架是Yii1.1版本的,通过看框架文档大致熟悉了解了Yii在日志方面的使用. 首先在protected/config/main.php配置文件中加入日志相关配置,如下图 ...
- Log4net日志GUI配置工具
关于log4net的配置文章在园子里真的很多,但是有关GUI界面配置的文章确定太少,改写了一个以前很早的工具 以前的那个有很多的问题,这个基本的大的问题没有,可能一个小问题还是需要修改下,基本功能肯定 ...
- Log4net 日志记录配置信息
<log4net> <!--配置日志的级别,低于此级别的就不写到日志里面去 OFF.FATAL.ERROR, WARN, INFO, DEBUG, ALL --> <ro ...
- [转]Log4Net日志插件配置详解
log4net是一款优秀的第三方日志框架,可以很容易的加载到开发项目中(引用log4net的dll,再配置些基本参数即可),帮助程序员把日志信息输出到各种不同的目标,常见的有文本.数据库.window ...
- log4net日志输出配置即输出到文件又输出到visual studio的output窗口
<configuration> <configSections> <section name="log4net" type="log4net ...
随机推荐
- xtrabackup 链接不上MySQL的问题
先看问题: [root@localhost ~]# innobackupex --user=root --password=131417 /backup InnoDB Backup Utility v ...
- 6. java.lang.IllegalArgumentException
方法的参数错误 比如g.setColor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查 ...
- IOSJSBRIGE商品内容模板
<p> 内容 </p> <script> window.onerror = function(err) { log('window.onerror: ' + err ...
- 有哪些适合学生参与的 C++,网络编程方面的开源项目?
有哪些适合学生参与的 C++,网络编程方面的开源项目? Tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通 ...
- Android中进行流量统计
// ---------------------流量统计-------------------------------- try { PackageManager pm = getPackageMan ...
- 解密:LL与LR解析 2(译,完结)
由于GFW,我无法联系到作者,所以没有授权,瞎翻译的.原文在这里[http://blog.reverberate.org/2013/07/ll-and-lr-parsing-demystified.h ...
- html5 绘制集合图形
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- SQL学习之学会使用子查询
1.SELECT语句是SQL的查询.我之前的随笔中所用的SELECT语句都是简单的查询,即从单个数据库表中检索数据的单条SELECT语句. 查询:任何SQL语句都是查询,但此术语一般指SELECT语句 ...
- 基于Nodejs开发的web即时聊天工具
由于公司需要开发web即时聊天的功能,开始时我们主要的实施方法是用jquery的ajax定时(10秒)轮询向服务器请求,由于是轮询请求,对 服务器的压力比较大.我们网站上线的时间不长,访问量不是很大, ...
- 2014.8.16 if语句
语句 if语句 大体可以分一下几种: 小知识 生成一个随机数: Random sss = new Random(); int a = sss.Next(100); Console.WriteLine ...