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&quot;.txt&quot;"/>
<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即可。不用去程序中注释原来所有的日志代码。

时间: 2024-12-06 03:36:08

c#中使用log4net工具记录日志的相关文章

在类库中使用log4net

最近在做一个类库,用的C#写的,为了DEBUG方便需要日志输出,于是找了log4net这个工具进行日志输出; 因为调用这个类库的是C++,而且本人对C++不是很熟悉,于是无法在app.config或者web.config中配置log4net的参数,另外google或百度,也没找到好的解决方法; 终于最后找了个百度文库的一个详细的log4net说明文档来看,自己参考其它的资料折腾好了. 1,新建个xml文档log4net.xml,里边配置log4net的参数; 2,项目的AssemblyInfo.

从类库中调用log4net的方法简介

大家在开发程序的时候,都会也必须用上日志功能.当前常用的日志工具可能就是log4net了.在当前基于框架的开发模式下,log4net都是在类库中调用(在核心服务类中作为一个服务供解决方案里的所有项目调用).在这种情况下常见的log4net调用设置显然是无法实现日志功能.经过实验,在完成以下几个步骤后,可以实现上述的功能:1.建立一个类库,在引用中加载log4net.dll:2.在AssemblyInfo.cs文件最后添加[assembly: log4net.Config.XmlConfigura

在asp.net core的项目中通过log4net添加日志记录到本地文件

=============================================== 2020/2/25_第1次修改                       ccb_warlock =============================================== 由于之前的时间都忙于项目的业务开发,对于log4net的使用一直是“拿来主义”,仅仅用在了调试时输出到控制台看结果,而没有深究配置文件的参数和具体的机制. 正巧这段时间项目进度没有那么紧张,我也有时间来完善框

在ArcEngine中使用Geoprocessing工具-执行工具

转自原文在ArcEngine中使用Geoprocessing工具-执行工具 来解析一下Geoprocessor类的Execute方法,他有两种重载,Execute(IGPProcess, ITrackCancel)和Execute(string, IVariantArray, ITrackCancel). Execute(IGPProcess, ITrackCancel) IGProcess是所有Geoprocessor工具类都实现了的接口,通过ITrackCancel接口能够处理用户发出的取消

合作开发三层架构版机房中的一些工具软件

一,EA 关于EA的使用,以前在http://blog.csdn.net/lhc1105/article/details/38128513 .真心感觉不错. 二,动软代码生成器 这个小东西主要因为是中文的,用起来感觉比EA上手,可以进行一些简单的操作:比如: 1,为数据库自动生成常用存储过程,也可以将自动生成的存储过程导出,交给D层的开发人员复制粘贴使用,减少工作量. 2,导出数据库设计文档,不过这个文档有点儿简单,要自己完善下. 3,生成三层架构的主体代码: 如图,连带有工厂模式的代码都可以生

eclipse中使用javap工具小结

关于javap的功能,百度百科上是这么解释的: javap javap是jdk自带的一个工具,可以反编译,也可以查看java编译器生成的字节码,是分析代码的一个好工具. 简单明了,大多时候真正的开发环境为linux系统,但是在windows下开发的时候又不习惯dos窗口的化,eclipse为我们提供了 javap的详细使用: 我们能够在eclipse中使用javap工具,我们有必要了解一下在eclipse中的Variables这个东西.这个英文单词的意思是变量集合的意思,意思就是我们以某些简短的

实用篇:说说我在JavaScript项目中使用的工具类

在JavaScript的开发中,我们都会写一些工具类来帮我们简化一些业务操作的逻辑,一下就貼几个我在项目开发过程中常用的工具类.表达能力有限,各位看官还是看源码吧. 一.日期处理工具类. /** * 日期处理工具类 * @Authors: jackyWHJ * @date 2013-10-18 * */ var DateUtils = { /** * 得到日期在一年当中的周数 */ getISOYearWeek: function(date) { var commericalyear = thi

MVC 中使用log4net 打印重复日志解决方法

最近在项目中引用log4net 来打印日志,会发现在同一时间点 打印重复记录: 详见图 其实,解决这个问题挺简单的就是太配置文件上logger 标签上添加一个additivity="false"属性就好了:完美解决.

java中常用的工具类(二)

下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71