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 ...
随机推荐
- 简易 Ajax 入门案例
AJAX = 异步 JavaScript 及 XML(Asynchronous JavaScript and XML) AJAX 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web ...
- Oracle查看和修改连接数(进程/会话/并发等等)
查询数据库当前进程的连接数及会话的连接数.并发连接数以及会话情况等等,感兴趣的你可以参考下哈,希望可以帮助到你 1.查询数据库当前进程的连接数: 复制代码 代码如下: select count(* ...
- 美国地质调研局USGS
https://lta.cr.usgs.gov/get_data/ http://www.usgs.gov/
- 信号和槽有一个非常精炼的C++实现,作者是Sarah Thompson,该实现只有一个头文件sigslot.h,跨平台且线程安全
关于信号和槽有一个非常精炼的C++实现,作者是Sarah Thompson,该实现只有一个头文件sigslot.h,跨平台且线程安全. 源码在:http://sigslot.cvs.sourcefor ...
- CSharp tar类型文件压缩与解压
最近闲暇时间开始写点通用基础类在写到tar类型文件压缩与解压时遇到点问题 压缩用的类库我是下载的 SharpZipLib_0860版本 先上代码 加压核心 /// <summary> // ...
- npm 常用命令
npm install xxx 安装模块npm install xxx@1.1.1 安装1.1.1版本的xxxnpm install xxx -g 将模块安装到全局环境中.npm ls 查看安装的 ...
- sqoop安装与使用
sqoop简介 sqoop名字是怎么来的?Sqoop: SQL-to-Hadoop 连接传统数据库和hadoop的桥梁,把关系型数据库的数据导入到hadoop系统(如HDFS,HBASE和hive中) ...
- kafka学习(一)-背景及架构设计
概念和术语 消息,全称为Message,是指在生产者.服务端和消费者之间传输数据. 消息代理:全称为Message Broker,通俗来讲就是指该MQ的服务端或者说服务器. 消息生产者:全称为Mess ...
- linux创建文件树,孩子兄弟树(或广义表),创建文件树及其訪问
假设在Linux下要訪问一个目录. 我们须要知道一下系统调用. 1.opendir(path); //注意path是绝对路径 2.ptr=readdir(dir);//dir 为opendir();正 ...
- Linux系统CentOS6.2版本号下安装JDK7具体过程
前言: java 是一种能够撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE( ...