Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件、数据库、EventLog等),日志就是程序的黑匣子,可以通过日志查看系统的运行过程,从而发现系统的问题。日志的作用:将运行过程的步骤、成功失败记录下来,将关键性的数据记录下来分析系统问题所在。Log4J是java的。

dll对应的xml文件是智能提示信息

使用步骤:

1、添加对log4net.dll的引用

2、在Web.Config (或App.Config)添加如下配置

<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<!-- Define some output appenders -->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="test.txt"/>
<appendToFile value="true"/>
<maxSizeRollBackups value=""/>
<maximumFileSize value="1024KB"/>
<rollingStyle value="Size"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
</configuration>

3、初始化:在程序最开始(global.asax的application_start里面)加入log4net.Config.XmlConfigurator.Configure();

4、在要打印日志的地方LogManager.GetLogger(typeof(Program)).Debug("信息");  //第一个参数传的是哪个类要记录日志

以上配置完成之后可能会报错如下:

以上的意思是configSections必须是configuration的第一个子元素,把位置改一下就可以了,完整的配置如下:

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<!-- appSettings网站信息配置-->
<appSettings>
<add key="Configpath" value="~/xmlconfig/site.config"/>
<add key="Urlspath" value="~/xmlconfig/urls.config"/>
<add key="Userpath" value="~/xmlconfig/user.config"/>
<add key="Orderpath" value="~/xmlconfig/order.config"/>
</appSettings>
<!-- 数据库连接字符串-->
<connectionStrings> </connectionStrings>
<!--
有关 web.config 更改的说明,请参见 http://go.microsoft.com/fwlink/?LinkId=235367。 可在 <httpRuntime> 标记上设置以下特性。
<system.Web>
<httpRuntime targetFramework="4.5" />
</system.Web>
--> <log4net>
<!-- Define some output appenders -->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="test.txt"/>
<appendToFile value="true"/>
<maxSizeRollBackups value=""/>
<maximumFileSize value="1024KB"/>
<rollingStyle value="Size"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net> <system.web>
<compilation debug="true" targetFramework="4.5"/>
<customErrors mode="Off"/>
<httpModules>
<add type="EazyBPMS.Web.UI.HttpModule, EazyBPMS.Web.UI" name="HttpModule"/>
</httpModules>
<httpHandlers>
<add verb="*" path="templates/main/*.html" type="System.Web.HttpForbiddenHandler"/>
</httpHandlers>
<!-- 文件上传大小KB-->
<httpRuntime requestValidationMode="2.0" maxRequestLength="" executionTimeout=""/>
<pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<add type="EazyBPMS.Web.UI.HttpModule, EazyBPMS.Web.UI" name="HttpModule"/>
</modules>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength=""/>
</requestFiltering>
</security>
</system.webServer>
</configuration>

至此log4net已经可以跑起来了

为了方便使用推荐在每个页面类开始写如下代码

  private static ILog logger = LogManager.GetLogger(typeof(Global));

然后在需要记录日志的地方记录就可以了,例如:

logger.Debug("Application_Start");

debug:一些调试信息你想加的看看到哪一步输出哪些参数都可以

error:错误信息  记得把异常也输出

warn:一些警告信息

Log4Net相关概念(*)

Appender:可以将日志输出到不同的地方,不同的输出目标对应不同的Appender:RollingFileAppender(滚动文件)、AdoNetAppender(数据库)、SmtpAppender (邮件)等。

level(级别):标识这条日志信息的重要级别。None>Fatal>ERROR>WARN>DEBUG>INFO>ALL,设定一个Level,那么低于这个Level的日志是不会被写到Appender中的。

Log4Net还可以设定多个Appender,可以实现同时将日志记录到文件、数据、发送邮件等;可以设定不同的Appender的不同的Level,可以实现普通级别都记录到文件,Error以上级别发送邮件;可以实现对不同的类设定不同的Appender;还可以自定义Appender,这样可以自己实现将Error信息发短信等。

(*)除了Log4Net,还有Enterprise Library中的Logging Application Block、Apache的CommonLog 以及NLog等,都差不多。

用Log4Net有什么好处?自己写文件不一样吗?灵活,可以不改代码只要改配置就可以做任意的控制。

常错:把项目的名字(本质上是程序集的名字)建成了log4net

最新文章

  1. css_随笔
  2. Cordova 3.x入门 - 目录
  3. 【Maven】解决缺少Jar包问题
  4. C#-WinForm-弹窗提示框-如何知道用户点击的是哪个按钮?
  5. jQuery积累
  6. Java第一天:安装搭建Java开发环境
  7. [异常] Download interrupted: Connection to https://dl-ssl.google.com refused 安卓SDK下载被拒 3步解决
  8. UVa OJ 197 - Cube (立方体)
  9. Java:IO流之字符流Reader、Writer详解
  10. ●linux进程的查看与操作●
  11. 追踪CM_CONTROLCHANGE消息的产生和执行过程,可以较好的领会VCL的思想(就是到处通知,但耦合性很弱)
  12. hihoCoder 1098
  13. Firebug介绍及使用技巧
  14. jsoup 解析html 页面数据
  15. 【转】聊聊HTTPS和SSL/TLS协议
  16. 这就是我想要的 VSCode 插件!
  17. Hadoop IO
  18. 调用系统命令 os.system()和os.popen()
  19. 使用MSF生成shellcode
  20. Linux中如何安装RAR

热门文章

  1. androidAndroid开发学习--Ionic+Cordova 环境搭建
  2. windows下的mysql闪退问题
  3. Yii2发送短信验证码完全解决方案
  4. CSS3滑块菜单
  5. 第二十二篇、IO多路复用 一
  6. poj 1019 Number Sequence 【组合数学+数字x的位宽函数】
  7. PostgreSQL基本操作
  8. python第六篇:Python复制超大文件、复制二进制文件
  9. thinkphp3.2新部署是错
  10. Python—numpy.argsort()