.NET中使用log4net
一,加载log4net引用
下载log4net.dll,我们这里使用的是.NET2.0
下载地址:http://files.cnblogs.com/gosky/log4net-1.2.13-bin-newkey.zip
解压以后将 /bin/net/2.0/release/log4net.dll 复制到项目的bin目录下。
二、配置log4net.config
1.在项目根目录下新建文件:log4net.config (注意一定要在根目录下),将下面的内容复制到文件中。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<log4net>
<!--定义输出到文件中-->
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<!--定义文件存放位置-->
<file value="D:/"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value=""logs_"yyyyMMdd".txt""/>
<StaticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<!--每条日志末尾的文字说明-->
<footer value="by jzhfz "yyyyMMdd""/>
<!--输出格式-->
<!--样例: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>
<!--日志级别:ALL/DEBUG/INFO/WARN/ERROR/FATAL/OFF-->
<level value="ALL"/>
<!--文件形式记录日志-->
<appender-ref ref="LogFileAppender"/>
<!--控制台控制显示日志-->
<appender-ref ref="ConsoleAppender"/>
<!--Windows事件日志-->
<appender-ref ref="EventLogAppender"/>
<!-- 如果不启用相应的日志记录,可以通过这种方式注释掉
<appender-ref ref="AdoNetAppender_Access" />
-->
</root>
</log4net>
</configuration>
其中<file value="D:/"/>指定要存放的日志文件的路径。上面是以日期分割日志文件,每天一个日志。
2.如果要以大小分割日志文件,将appender节点内容换成下面的内容。
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<!--定义文件存放位置-->
<file value="D:/log.txt"/>
<appendToFile value="true"/>
<!--最大变换数量-->
<maxSizeRollBackups value="3" />
<!--最大文件大小-->
<maximumFileSize value="20KB" />
<rollingStyle value="Size"/>
<datePattern value=""logs_"yyyyMMdd".txt""/>
<StaticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<!--每条日志末尾的文字说明-->
<footer value="by jzhfz"/>
<!--输出格式-->
<!--样例: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>
于日期分割不同的是:<StaticLogFileName value="true"/>要设置为true,生成的日志文件为 log.txt.1 log.txt.2 log.txt.3
超出最大数量将自动覆盖最前面的文件。 三、设置项目使用log4net输出日志
1.在web.config中配置
<configSections>
<!--使用log4net输出日志-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
2.新增属性文件AssemblyInfo.cs,内容如下
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; // 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。 [assembly: log4net.Config.DOMConfigurator(ConfigFile = "log4net.config", Watch = false)]
到这里我们所有的配置工作已经完成。下面介绍如何使用log4net来记录日志。
四、log4net的使用
在需要使用的地方引入命名空间:
using log4net;
using System.Reflection;
public ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
logger.Info(“正常的日志”);
logger.Error("发生了一个异常");
logger.Fatal("发生了一个致命错误");
logger.Debug(“调试信息”);
logger.Warn(“警告”);
如果想了解每个属性更详细的配置,可参考:http://blog.sina.com.cn/s/blog_6d1c583c01010tf3.html
.NET中使用log4net的更多相关文章
- 在C#代码中应用Log4Net系列教程(附源代码)
Log4Net应该可以说是DotNet中最流行的开源日志组件了.以前需要苦逼写的日志类,在Log4Net中简单地配置一下就搞定了.没用过Log4Net,真心不知道原来日志组件也可以做得这么灵活,当然这 ...
- 在C#代码中应用Log4Net(二)典型的使用方式
不管用什么框架,学什么东西,最初的想法还不是尽快地用上这个框架,所以我们在这个章节还是不打算介绍具体配置节的应用,而是直接给出一个经典的使用样例,让你尽快上手.即使你对Log4Net的配置不熟悉也完全 ...
- 在C#代码中应用Log4Net(三)Log4Net中配置文件的解释
一个完整的配置文件的例子如下所示,这个是”在C#代码中应用Log4Net(二)”中使用的配置文件. <log4net> <!-- 错误日志类--> <logger nam ...
- 在C#代码中应用Log4Net(五)将Log4Net正确地封装在自己的类库中并进行调用
前面的几篇文章已经比较完整地解释了怎么使用Log4Net,但是我们可能需要将Log4Net的日志类封装在自己的类库中,以便C/S或B/S程序进行调用.下面的示例程序简单地分为两层,一个是应用程序层We ...
- C#中使用Log4net日志输出到本地文件、Textbox或Listview
网上很多配置log4net的方法,但是排行靠前的 根本就没有说明清除,导致浪费了两个小时来搞清楚如何配置,真是无语,特写此文,给那些刚接触log4net的朋友 1.参考链接:http://blog.s ...
- 在C#代码中应用Log4Net(二)典型的使用方式(转)
不管用什么框架,学什么东西,最初的想法还不是尽快地用上这个框架,所以我们在这个章节还是不打算介绍具体配置节的应用,而是直接给出一个经典的使用样例,让你尽快上手.即使你对Log4Net的配置不熟悉也完全 ...
- 在C#代码中应用Log4Net 中配置文件的解释
一个完整的配置文件的例子如下所示,这个是”在C#代码中应用Log4Net(二)”中使用的配置文件. <log4net> <!-- 错误日志类--> <logger nam ...
- MVC 中使用log4net 打印重复日志解决方法
最近在项目中引用log4net 来打印日志,会发现在同一时间点 打印重复记录: 详见图
- Azure Cloud中的Log4Net设置
这里的Cloud包含Worker Role和Web Role,Role是运行在云主机中的,这里的主机和VM有所不同,Windows Azure Role Architecture.我们并没有和本地服务 ...
- 在类库中使用log4net
最近在做一个类库,用的C#写的,为了DEBUG方便需要日志输出,于是找了log4net这个工具进行日志输出; 因为调用这个类库的是C++,而且本人对C++不是很熟悉,于是无法在app.config或者 ...
随机推荐
- Shell中set用法(转载)
使用set命令可以设置各种shell选项或者列出shell变量. 单个选项设置常用的特性. 在某些选项之后-o参数将特殊特性打开. 在某些选项之后使用+o参数将关闭某些特性, 不带任何参数的set命令 ...
- Java多线程之新类库中的构件PriorityBlockingQueue
package concurrent2; import java.util.ArrayList; import java.util.List; import java.util.Queue; impo ...
- Restful API的设计与实践
Restful这个名称应该很多人都不陌生,但是我发现不少人对Restful存在或多或少的理解偏差,其中不泛比较厉害的程序员,所以有必要为Restful来“正名”. Restful是一种软件架构风格,设 ...
- [Flex] ButtonBar系列——最后一个项目的样式设置
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- 批量修改java文件的包名
需求:我复制进批量的java文件,但是包名需要用现在创建的包名 导入进来时,由于包名不一致会报错 解决办法,点击包名鼠标右键>Refactor>Rename 结果如下ok:
- Spring Data Jpa真爽啊
http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-jpa/ 持久层的实现类可以让框架生成.只需要声明持久层接口,框架直接生成代理 ...
- 黑马程序员_Java基本数据的自动拆装箱及享元设计模式视频学习笔记
------- android培训.java培训.期待与您交流! ---------- 装箱:把基本数据类型装成java类(被托管?). 拆箱:把java类拆成基本数据类型(取消托管? ...
- winform异步进度条LongTime
winform异步进度条LongTime,运用到回调函数 定义事件的参数类: namespace LongTime.Business { // 定义事件的参数类 public class ValueE ...
- 怎样对CODESOFT中的条形码进行黑白转换
CODESOFT 2015标签设计软件能 够提供无与伦比的灵活性.功能和支持,其面对的用户也是极其的广泛.对于一些需要打印黑白反转条形码的特殊用户,例如使用黑色标签纸的用 户,CODESOFT 2 ...
- "开发路上踩过的坑要一个个填起来————持续更新······(7月30日)"
欢迎转载,请注明出处! https://gii16.github.io/learnmore/2016/07/29/problem.html 踩过的坑及解决方案记录在此篇博文中! 个人理解,如有偏颇,欢 ...