1.从log4net官网下载最新的log4net.dll

2.设置配置文件在app.config

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>
<log4net debug="false"> <!--使用Rolling方式记录日志按照日来记录日志-->
<appender name="RunLog" type="log4net.Appender.RollingFileAppender">
<!--文件名,可以相对路径,也可以绝对路径,这里只给定了文件夹-->
<file value="log\\runtime\\" />
<!--最小锁定模型以允许多个进程可以写入同一个文件,解决文件独占问题-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--是否增加文件-->
<appendToFile value="true" />
<!--日志追加类型,Date为按日期增加文件,Size为按大小-->
<rollingStyle value="Date" />
<!--文件命名格式,非日期参数化要进行转义,如自定义文件后缀-->
<datePattern value="yyyyMM\\yyyy-MM-dd&quot;.log&quot;" />
<!--是否固定文件名-->
<staticLogFileName value="false" />
<!--内容布局-->
<layout type="log4net.Layout.PatternLayout">
<!--头部-->
<header value="----------------------header-------------------------- "/>
<!--结尾-->
<footer value="----------------------footer-------------------------- "/>
<!--输出格式化-->
<conversionPattern value="当前时间:%d [%p] %m %n" />
</layout>
<!--过滤器-->
<filter type="log4net.Filter.LevelRangeFilter">
<!--只接受最小等级与最大等级之间的日志输出,这里只接受INFO级别的输出-->
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender> <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
<file value="log\\error\\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMM\\yyyy-MM-dd&quot;.log&quot;" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<header value="----------------------header-------------------------- "/>
<footer value="----------------------footer-------------------------- "/>
<conversionPattern value="当前时间:%d 错误类型:[%p] 信息:%m 所在类:%F 所在行:%L %n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<!--只接受最小等级与最大等级之间的日志输出,其他的被过滤,这里接受WARN(警告),ERROR(错误),FATAL(致命)级别的输出-->
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender> <!--定义日志的输出媒介-->
<root>
<!--RollingFileAppender事件日志-->
<appender-ref ref="RunLog" />
<appender-ref ref="ErrorLog" />
</root> </log4net> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>

3.在Properties/AssemblyInfo.cs,添加下面一个代码

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

4.在程序中使用

//日志
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); //记录程序启动
log.Info("程序启动"); //记录程序发生错误
log.Error("发生错误:HttpListener已经被关闭");

在c#中使用log4net的更多相关文章

  1. 在C#代码中应用Log4Net系列教程(附源代码)

    Log4Net应该可以说是DotNet中最流行的开源日志组件了.以前需要苦逼写的日志类,在Log4Net中简单地配置一下就搞定了.没用过Log4Net,真心不知道原来日志组件也可以做得这么灵活,当然这 ...

  2. 在C#代码中应用Log4Net(二)典型的使用方式

    不管用什么框架,学什么东西,最初的想法还不是尽快地用上这个框架,所以我们在这个章节还是不打算介绍具体配置节的应用,而是直接给出一个经典的使用样例,让你尽快上手.即使你对Log4Net的配置不熟悉也完全 ...

  3. 在C#代码中应用Log4Net(三)Log4Net中配置文件的解释

    一个完整的配置文件的例子如下所示,这个是”在C#代码中应用Log4Net(二)”中使用的配置文件. <log4net> <!-- 错误日志类--> <logger nam ...

  4. 在C#代码中应用Log4Net(五)将Log4Net正确地封装在自己的类库中并进行调用

    前面的几篇文章已经比较完整地解释了怎么使用Log4Net,但是我们可能需要将Log4Net的日志类封装在自己的类库中,以便C/S或B/S程序进行调用.下面的示例程序简单地分为两层,一个是应用程序层We ...

  5. C#中使用Log4net日志输出到本地文件、Textbox或Listview

    网上很多配置log4net的方法,但是排行靠前的 根本就没有说明清除,导致浪费了两个小时来搞清楚如何配置,真是无语,特写此文,给那些刚接触log4net的朋友 1.参考链接:http://blog.s ...

  6. 在C#代码中应用Log4Net(二)典型的使用方式(转)

    不管用什么框架,学什么东西,最初的想法还不是尽快地用上这个框架,所以我们在这个章节还是不打算介绍具体配置节的应用,而是直接给出一个经典的使用样例,让你尽快上手.即使你对Log4Net的配置不熟悉也完全 ...

  7. 在C#代码中应用Log4Net 中配置文件的解释

    一个完整的配置文件的例子如下所示,这个是”在C#代码中应用Log4Net(二)”中使用的配置文件. <log4net> <!-- 错误日志类--> <logger nam ...

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

    最近在项目中引用log4net 来打印日志,会发现在同一时间点 打印重复记录: 详见图

  9. Azure Cloud中的Log4Net设置

    这里的Cloud包含Worker Role和Web Role,Role是运行在云主机中的,这里的主机和VM有所不同,Windows Azure Role Architecture.我们并没有和本地服务 ...

  10. 在类库中使用log4net

    最近在做一个类库,用的C#写的,为了DEBUG方便需要日志输出,于是找了log4net这个工具进行日志输出; 因为调用这个类库的是C++,而且本人对C++不是很熟悉,于是无法在app.config或者 ...

随机推荐

  1. 基于OpenCV的iOS开发笔记(1)

    本系列文章采用的的开发环境为: 1)Xcode 6 2)OpenCV for iOS 3.0.0 -------------------分割线---------------------------- ...

  2. TypeScript学习笔记(二):基本数据类型及数据转换

    数据类型 我们来看看TypeScript中的基本数据类型都有哪些. boolean 布尔值,支持true和false. var isDone: boolean = false; 默认为undefine ...

  3. Oracle 的 INSERT ALL和INSERT FIRST

    描述性的东西就不来了,搞技术的,最喜欢实在的实例.通过下面的例子,大家很快就能明白insert all 与 insert first 的功能,比文字描述更通俗易懂. 一.INSERT ALL 不带条件 ...

  4. .NET通用权限系统快速开发框架

    DEMO下载地址: http://download.csdn.net/detail/shecixiong/5372895 一.开发技术:B/S(.NET C# ) 1.Windows XP以上 (支援 ...

  5. UVa10050 Hartals

    // 题意:输入n和p个整数H[i],其中H[i]表示每H[i]天会有一次活动(但周五周六除外).输出前n天中有多少天有活动.模拟从周日开始.   #include<cstdio> #in ...

  6. UVa 11111 Generalized Matrioshkas

    嵌套玩具, 要求外层玩具的尺寸比内层玩具尺寸的和要大. 每一个玩具由一个负数与相应的正数表示, 在这两数之间的部分即为此玩具内部的玩具. 要求判断一串输出的数字是否能组成一个合法的玩具. 一个合法的玩 ...

  7. libIconv.lib编码库的生成和使用

    iconv是将一种编码格式转换为另一种编码格式的开源库,例如可以把Windows环境下通用的ASCii(中文是GB2312)编码转换为国际通用的Unicode编码 iconv最新版本只支持MingW和 ...

  8. Bump mapping的GLSL实现 [转]

    原文 http://www.cnblogs.com/CGDeveloper/archive/2008/07/03/1234206.html 如果物体表面细节很多,我们可以不断的精细化物体的几何数据,但 ...

  9. bat 简单命令实现编译cocos2d-x android项目

    新建一个compile_cmd.bat文件,存放需要执行的命令: cocos compile -p android -j 4 然后,如果直接运行这个文件,在编译完之后命令行窗口会自动退出,这样我们无法 ...

  10. delphi 2010 资源文件使用

    Project              Recources...   //1提取出资源 procedure TForm1.Button1Click(Sender: TObject);begin  w ...