c#中使用log4net工具记录日志
首先,去官网下载log4net工具 链接http://logging.apache.org/log4net/download_log4net.cgi
目前最新的版本 log4net-1.2.15-bin-newkey.zip

下载之后,目录log4net-1.2.15-bin-newkey\log4net-1.2.15\bin\net\4.0\release 里面的log4net.dll就是我们要引用的dll了。
新建一个winform程序,添加引用

然后在程序配置文件App.conifg中加入配置,这里要申明的一点是,不是一定要把log4net的配置放在这个文件里,重新创建一个xml文件也是可以的,一会儿将在下面说到。
我配置得比较简单,需要进行复杂配置的朋友可以去参照他给的示例xml,里面有注释。配置文件App.config如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler"/>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<log4net>
<logger name="ErrorLog">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<file value="log\\ErrorLog\\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<staticLogFileName value="false" />
<datePattern value="_yyyyMMdd".txt""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-d{yyyy-MM-dd HH\:mm\:ss} - %p%n%m%n%n"/>
</layout>
</appender>
</log4net>
</configuration>
值得注意的是,一个log需要有一个对应的appender。appender中可以配置日志的格式啊,追加日志的方式啊等等。
然后有一点需要特别注意的就是。一定要在Properties中的AssemblyInfo.cs中添加一行:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
这里回答一下上面的问题。在这一行配置中,是可以配置log4net的配置文件位置的,如果像上面一样,就是程序默认的配置文件App.config中读取配置信息,如果你想写在其他地方,单独写一个xml,比如要写在最终生成的exe同级目录下的log4net.xml中,那么这一行就该这么写
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.xml", Watch = true)]
注意watch=true是必须的,否则程序就不会对这个进行监听,换个意思,这里可以做开关日志记录的操作。
然后配置完成。看效果。
我们添加一个按钮,直接来看效果:

然后在这个按钮的点击事件中:
private void button1_Click(object sender, EventArgs e)
{
log4net.ILog log = log4net.LogManager.GetLogger("ErrorLog");
log.Error("日志测试");
}
这里略加提醒,这个ErrorLog是在配置文件中配置的logger的name属性,不可以胡乱写,不然程序会找不到那个logger。另外,可以在配置文件中配置各种logger,很多logger,比如业务方面的,数据库方面的,错误信息,换一个logger名字和对应的Appender的名字就可以了。
然后点击按钮。按照代码,应该写一个错误日志,日志内容是“日志测试”,我们去看看结果。

从上图可以看到,在debug目录新建了一个文件夹log,点击进去

这里这个文件夹就是在配置文件中配置的logger名称了,你配置了多个logger,这里就会有多个对应的文件夹,

这个日志文件的名字格式也是在对应的appender 中可以配置的,打开txt文件:

成功!!!同理,这里所有的格式,都是可以配置的。赶快去使用吧。
总结一下需要注意的点:
1、配置文件一个logger要有一个对应的appender,这个appender可以决定日志的名字,格式,写入方式等等。
2、配置好以后一定不要放了去Properties中的AssemblyInfo.cs中添加一行:[assembly: log4net.Config.XmlConfigurator(Watch = true)],如果你的配置不是写在程序默认配置文件中的,这里要设置好文件的路径,具体例子看上面正文。要关掉日志,Wacth=false即可。不用去程序中注释原来所有的日志代码。
c#中使用log4net工具记录日志的更多相关文章
- 在类库项目中使用log4net(RollingFileAppender)记录日志
1.创建解决方案 2.创建类库项目 3.根据需要修改命名空间,修改(和/或)添加类到类库 4.引用log4net 5.类库项目根目录下创建leg4net配置文件,如D3CallTriggerPlugi ...
- .NET中使用log4net
一,加载log4net引用 下载log4net.dll,我们这里使用的是.NET2.0 下载地址:http://files.cnblogs.com/gosky/log4net-1.2.13-bin-n ...
- 在类库中使用log4net
最近在做一个类库,用的C#写的,为了DEBUG方便需要日志输出,于是找了log4net这个工具进行日志输出; 因为调用这个类库的是C++,而且本人对C++不是很熟悉,于是无法在app.config或者 ...
- 在ASP.NET MVC中使用Log4Net记录异常日志,出错时导向到静态页
本篇体验在ASP.NET MVC 4中使用Log4Net记录日志. 通过NuGet安装Log4Net. 需求是:当出错时导向到Error.html静态页面,Log4Net记录错误信息. 大致的思路是: ...
- asp.net core中使用log4net
和之前的ASP.NET MVC中的使用LOG4NET的方法有些不同,这里先记录一下,使用步骤如下 : 1. 建立 ASP.NET CORE项目中,NUGET中搜索log4net后下载安装 2. 根目录 ...
- Quartz.net 2.x 学习笔记02-Quartz.net 2.x在MVC站点中结合Log4net的使用
Quartz.net 2.x在MVC站点中结合Log4net的使用 首先新建一个MVC的空站点: 第二步,添加Quartz.net的引用 在搜索处输入quartz.net搜索安装即可(目前是2.3) ...
- 利用Log4net组件记录日志
项目中利用Log4net记录日志还是比较方便的,我也按照网上的一些操作进行了实践 参考文章 1:Log4Net使用指南2:LOG4NET日志配置 组件下载 log4net组件下载 1:设置配置文件,这 ...
- .netcore3.1使用log4net/nlog记录日志
.netcore3.1使用log4net/nlog记录日志 .netcore3.1与2.x之间很是有不少差异的.本来想通过ctrl+c,ctrl+v将在2.2中实现的简单日志记录搬到.netcore3 ...
- 在C#代码中应用Log4Net系列教程(附源代码)
Log4Net应该可以说是DotNet中最流行的开源日志组件了.以前需要苦逼写的日志类,在Log4Net中简单地配置一下就搞定了.没用过Log4Net,真心不知道原来日志组件也可以做得这么灵活,当然这 ...
随机推荐
- 大数据技术 vs 数据库一体机[转]
http://blog.sina.com.cn/s/blog_7ca5799101013dtb.html 目前,虽然大数据与数据库一体机都很火热,但相当一部分人却无法对深入了解这两者的本质区别.这里便 ...
- 面试题之 query转为obj
要注意处理编码后的字串 对于a=123要得到number形的值 function parseQueryString(url) { var obj = {}; var query = url.sear ...
- 10_Segue Example
10 // // ViewController.swift // Segues Example // // Created by ZC on 16/1/10. // Copyright © 2016年 ...
- SSHD配置
http://blog.licess.com/sshd_config/ LIBPCAP http://blog.csdn.net/htttw/article/details/7521053 Oracl ...
- 时尚B2B方兴未艾-Maker’s Row 获100万美元种子投资 |华丽志
时尚B2B方兴未艾-Maker's Row 获100万美元种子投资 |华丽志 华丽志 » 网internet, 时尚B2B方兴未艾-Maker's Row 获100万美元种子投资 由 luxeco 发 ...
- Drupal7模块multiselect使用
Drupal二次开发的时候,我们时常要使用到多选列表,但是官方默认的多选下拉列表,是在不敢恭维如下图所示: 不过难看不可怕,Drupal有两万第三方模块做支撑,只有你想不到,没有找不到的. 功夫不负有 ...
- java程序错误类型及异常处理
一.程序的错误类型 在程序设计中,无论规模是大是小,错误总是难免的.程序的设计很少有能够一次完成,没有错误的(不是指HelloWorld这样的程序,而是要实现一定的功能,具备一定实用价值的程序),在编 ...
- Linux中环境变量到底写在哪个文件中?解析login shell 和 no-login shell
login shell:取得bash 时需要完整的登入流程,就称为login shell.举例来说,同tty1~tty6登入时, 需要输入用户名和密码,此时取得的bash就称为login shell ...
- Codeforces 235B Let's Play Osu! 概率dp(水
题目链接:点击打开链接 给定n表示有n个格子 以下每一个格子为O的概率是多少. 对于一段连续 x 个O的价值就是 x*x ; 问: 获得的价值的期望是多少. 思路: 把公式拆一下.. #include ...
- protobuf 中的嵌套消息的使用
protobuf的简单的使用,不过还留下了一个问题,那就是之前主要介绍的都是对简单数据的赋值,简单数据直接采用set_xx()即可,但是如果不是简单变量而是自定义的复合类型变量,就没有简单的set函数 ...