65.9K
CodeProject 正在变化。 阅读更多。
Home

如何使用ASP.NET 2.0及更高版本配置Log4net(带视频)?

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.13/5 (11投票s)

2009年10月22日

CPOL

7分钟阅读

viewsIcon

43835

downloadIcon

159

如何使用ASP.NET 2.0及更高版本配置Log4net(带视频)?

   

Log4Net如何使用的视频链接: 如何使用视频链接[^]
Log4Net如何观看的视频链接: 如何使用视频链接[^]
  1. 以前在本地机器上运行正常,但在部署到生产环境后,总是会跳转到错误页面!  
  2. 但经过生产环境的一些修改后,在进入数据库时,会跳转到错误页面。
  3. 想显示用户友好的消息,而不是给用户看异常信息!但想将异常外部存储起来。 

                         解决方案是 Log4Net。

  

  最终产品 : 

 

                                       图片:日志文件 

简介:  

log4net 是一个帮助程序员将日志语句输出到各种输出目标的工具。在应用程序出现问题时,启用日志记录有助于定位问题。使用 log4net 可以在不修改应用程序二进制文件的情况下,在运行时启用日志记录。log4net 软件包的设计宗旨是,日志语句可以保留在已发行的代码中,而不会带来很高的性能开销。因此,日志记录的速度(或者说不记录的速度)至关重要。同时,日志输出可能非常庞大,以至于很快就会让人不知所措。log4net 的一个显著特点是分层日志记录器的概念。使用这些日志记录器,可以以任意粒度选择性地控制输出哪些日志语句。

log4net 的设计有两个明确的目标: 速度和灵活性 

特点

  • 支持多种框架
  • 输出到多个日志记录目标
  • 分层日志记录架构
  • XML 配置
  • 动态配置
  • 日志记录上下文
  • 成熟的架构
  • 模块化和可扩展的设计
  • 高性能与灵活性

XML 配置

log4net 使用 XML 配置文件进行配置。配置信息可以嵌入到其他 XML 配置文件中(例如应用程序的 .config 文件)或单独的文件中。该配置易于阅读和更新,同时保留了表达所有配置的灵活性。或者,log4net 也可以通过编程方式进行配置。

动态配置

log4net 可以监视其配置文件中的更改,并动态应用配置器所做的更改。日志级别、Appender、Layout 以及几乎所有其他内容都可以在运行时进行调整。在许多情况下,可以在不终止进程的情况下诊断应用程序问题。这对于调查已部署应用程序的问题可能是一个非常有价值的工具。

如何配置 Log4Net FileAppender: 将日志事件追加到文件中。 

      开始
           运行
             Devenv //启动 VisualStudio 开发环境
                   文件
                       新建网站 <-
 

                      模板:Asp.Net网站
                      位置: Http https:///Log4netDemo
                      语言:VisualC#
                                                                             确定<--

将以下行添加到 Web.config 文件。这将添加自定义配置节。要了解有关 自定义配置 的更多信息

<section name="log4net "type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"> 

添加自定义配置节 图片:1

现在,在 Web.configFile 中添加 Appender 配置,如下图所示。

Appender 区块图片:2

<log4net>
        <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
            <!-- Please make shure the ..\\Logs directory exists! -->
            <param name="File" value="Logs\\Log4Net.log"/>
            <!--<param name="AppendToFile" value="true"/>-->
            <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
            </layout>
        </appender>
        <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
            <to value=""/>
            <from value=""/>
            <subject value=""/>
            <smtpHost value=""/>
            <bufferSize value="512"/>
            <lossy value="true"/>
            <evaluator type="log4net.Core.LevelEvaluator">
                <threshold value="WARN"/>
            </evaluator>
            <layout type="log4net.Layout.PatternLayout">
<conversionPattern 
       value="%newline%date [%thread] %-5level %logger [%property] - %message%newline%newline%newline"/>
            </layout>
        </appender>
        <logger name="File">
            <level value="All"/>
            <appender-ref ref="LogFileAppender"/>
        </logger>
        <logger name="EmailLog">
            <level value="All"/>
            <appender-ref ref="SmtpAppender"/>
        </logger>
    </log4net> 

Appender 区块的 XML 代码  

有关 File Appender 的更多信息

关于 File Appender

将日志事件发送到由 File 属性指定的日志文件中。可以通过指定 AppendToFile 属性以追加或覆盖模式打开日志文件。如果文件路径是相对路径,则相对于应用程序基目录。可以通过设置 Encoding 属性来指定文件编码。Layout 的 Header 和 Footer 值将在每次打开和关闭文件时分别写入。如果 AppendToFile 属性为 true,则日志文件可能包含多个 Header 和 Footer 的副本。此 Appender 将在调用 ActivateOptions 时尝试打开日志文件进行写入。这通常发生在配置期间。如果无法打开日志文件进行写入,则 Appender 将在每次记录消息时尝试再次打开日志文件。如果记录消息时无法打开日志文件进行写入,则该消息将被此 Appender 丢弃。

FileAppender 通过 Locking Model 属性支持可插拔的文件锁定模型。默认行为,由 FileAppender.ExclusiveLock 实现,是在 Appender 关闭之前获取对日志文件的独占写入锁。替代模型 FileAppender.MinimalLock 仅在 Appender 写入日志事件时持有写入锁。

Global.asax 文件

Global.asax 文件,也称为 ASP.NET 应用程序文件,是一个可选文件,其中包含响应 ASP.NET 或 HttpModules 引发的应用程序级别事件的代码。Global.asax 文件位于基于 ASP.NET 的应用程序的根目录中。在运行时,Global.asax 会被解析并编译成一个从 HttpApplication 基类派生的动态生成的 .NET Framework 类。Global.asax 文件本身被配置为自动拒绝对其的任何直接 URL 请求;外部用户无法下载或查看其中编写的代码。

添加 Global.asax 文件

       Alt+Ctrl+L (打开解决方案资源管理器)
               AddNewItem
                   GlobalApplicationClass

                 名称:Global.asax

                 语言:VisualC# 

                                                                 添加<-

向网站添加 Global.asax 文件。

添加 Global.asax 文件图片:3

现在,按照下图所示添加 Log4net Dll 的引用。

      Alt+Ctrl+L (打开解决方案资源管理器)
                     AddReference
                       Browse(浏览并选择 dll)

                                             确定<-

添加 Log4Net 引用图片:4

在 Application_Start 事件中添加以下行,如下所示。 

添加 XmlConfigurator 图片:5 

                       void Application_Start(object sender, EventArgs e) 
                            {
                             // Code that runs on application startup
                             log4net.Config.XmlConfigurator.Configure();
                             } 

以上行指示 XmlConfigurator 解析配置文件并据此设置日志记录。配置文件的路径在命令行上指定。

Application_Start 事件:应用程序启动时运行的代码 

现在,在 Default.aspx 的 Page_Load 事件中添加以下代码。

           //Typer of messages Which Log4net Supports..!
        log4net.ILog logger = log4net.LogManager.GetLogger("File");
        logger.Info("This  is For Info Message");
        logger.Warn("This is For Warn Message");
        logger.Error("This is For Error Message");
        logger.Debug("this is for Debug Message");

Default.aspx.cs 中的代码图片:6

 

 ILog : 

         ILog 接口用于应用程序将消息记录到 log4net 框架中。  

ILog 属性 :  

IsDebugEnabled检查此日志记录器是否启用了 Debug 级别。
IsErrorEnabled检查此日志记录器是否启用了 Error 级别。
IsFatalEnabled检查此日志记录器是否启用了 Fatal 级别。
IsInfoEnabled检查此日志记录器是否启用了 Info 级别。
IsWarnEnabled检查此日志记录器是否启用了 Warn 级别。

ILog 的公共实例方法:  

Debug重载。使用 Debug 级别记录消息对象。
DebugFormat重载。使用 Debug 级别记录格式化字符串。
Error重载。使用 Error 级别记录消息对象。
ErrorFormat重载。使用 Error 级别记录格式化消息字符串。
Fatal重载。使用 Fatal 级别记录消息对象。
FatalFormat重载。使用 Fatal 级别记录格式化消息字符串。
Info重载。使用 Info 级别记录消息对象。
InfoFormat重载。使用 Info 级别记录格式化消息字符串。
Warn重载。使用 Warn 级别记录消息对象。
WarnFormat重载。使用 Warn 级别记录格式化消息字符串。

LogManager

此类具有客户端用于请求日志记录器实例的静态方法。GetLogger 方法用于检索日志记录器。有关 LogManager 的更多信息

有很多种方法可以实现 log4net!有关 Log4net 类型 的更多信息

 现在运行文件,您将在解决方案资源管理器中看到一个名为 Logs 的新文件夹,如下所示。 

 

解决方案资源管理器中的 Logs 文件夹图片:7  

注意

      如果仍然无法工作,请检查网站的 IIs 设置。确保您已为 Logs 文件夹授予了写入权限。  

附加功能(可选):  

    您可以使用 Global.asax 文件中的 Application_Error  来记录服务器的最后一个错误到日志文件中。 

            void Application_Error(object sender, EventArgs e) 
                {
                   log4net.ILog logger = log4net.LogManager.GetLogger("File");
                   string error = Server.GetLastError().GetBaseException().ToString();
                   logger.Error(error);

                }

总结 : 

         以上文章将帮助您使用 log4net 文件 Appender 记录应用程序的后台详细信息。 

参考和进一步研究 : 

  • 更新于 2009 年 10 月 14 日  

© . All rights reserved.