zoukankan      html  css  js  c++  java
  • 快速入门系列--Log4net日志组件

    Log4net是阿帕奇基金会的非常流行的开源日志组件,是log4j的.NET移植版本,至今已经有11年的历史,使用方便并且非常稳定,此外很重要的一点是其和很多开源组件能很好的组合在一起工作,例如NHibernate等。对于以本地日志为主的中小型的项目,Log4net已经足够使用,当然涉及跨平台的大型分布式系统可以选择Elmah等其他日志组件。

    在这里,主要介绍log4net的一些关键知识点,详细内容可见以下链接:

    首先是log4net的四个对象:

    • Logger记录器:用于产生日志,包括Fatal、ERROR、WARN、INFO、DEBUG,可以通过设置logger的记录级别进行设置,例如level=INFO,那么除了DEBUG级别的信息,其他FATAL、ERROR、WARN、INFO等级别都将被记录。
    • Reposity库:维护日志对象的组织结构,主要用于对框架的扩展,一般使用不用关注。
    • Appender附着器:用于设置Log的输出模式,如文件、数据库、邮件等。
    • Layout布局:设置日志信息的格式。

    其中Appender的选择很多,但最常见的最有实际意义的分别是:

    log4net.Appender.RollingFileAppender:通过配置,可以达到日志文件每天以日期新建一个,方便查看,还可以设置日志文件大小,防止侵占硬盘。

    log4net.Appender.SmtpAppender:用于FATAL、ERROR等高危级别的日志,直接发邮件给项目责任人,非常的方便有效。

    log4net.Appender.AdoNetAppender:和SQL SERVER很紧密的结合,便于将重要日志信息记入数据库,便于查找和备份。

    最后,想说的是log4net组件可以通过配置LockingModel设置并发时日志文件锁的模式,使其应用场景得到很大的扩充。

    附上一个简单日志配置例子作为参考,具体设置时有什么问题欢迎一起探讨哈,:) :

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <configuration>
     3 <configSections>
     4 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
     5 </configSections>
     6 <log4net>
     7 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
     8 <layout type="log4net.Layout.PatternLayout">
     9 <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline"/>
    10 </layout>
    11 </appender>
    12 <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
    13 <bufferSize value="100"/>
    14 <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    15 <connectionString value="data source=(localdb)v11.0;initial catalog=NormalTest;integrated security=false;persist security info=True;User ID=[user];Password=[pwd]"/>
    16 <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"/> 
    17 <parameter>
    18 <parameterName value="@log_date"/>
    19 <dbType value="DateTime"/>
    20 <layout type="log4net.Layout.RawTimeStampLayout"/>
    21 </parameter>
    22 <parameter>
    23 <parameterName value="@thread"/>
    24 <dbType value="String"/>
    25 <size value="255"/>
    26 <layout type="log4net.Layout.PatternLayout">
    27 <conversionPattern value="%thread"/>
    28 </layout>
    29 </parameter>
    30 <parameter>
    31 <parameterName value="@log_level"/>
    32 <dbType value="String"/>
    33 <size value="50"/>
    34 <layout type="log4net.Layout.PatternLayout">
    35 <conversionPattern value="%level"/>
    36 </layout>
    37 </parameter>
    38 <parameter>
    39 <parameterName value="@logger"/>
    40 <dbType value="String"/>
    41 <size value="255"/>
    42 <layout type="log4net.Layout.PatternLayout">
    43 <conversionPattern value="%logger"/>
    44 </layout>
    45 </parameter>
    46 <parameter>
    47 <parameterName value="@message"/>
    48 <dbType value="String"/>
    49 <size value="4000"/>
    50 <layout type="log4net.Layout.PatternLayout">
    51 <conversionPattern value="%message"/>
    52 </layout>
    53 </parameter>
    54 <parameter>
    55 <parameterName value="@exception"/>
    56 <dbType value="String"/>
    57 <size value="2000"/>
    58 <layout type="log4net.Layout.ExceptionLayout"/>
    59 </parameter>
    60 </appender>
    61 <appender name="Log4Net_INFO" type="log4net.Appender.RollingFileAppender">
    62 <file value="C:/log4net/LuceneDemo/info/"/>
    63 <appendToFile value="true"/>
    64 <RollingStyle value="Date"/>
    65 <DatePattern value="yyyyMMdd&quot;.log&quot;"/>
    66 <StaticLogFileName value="false"/>
    67 <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
    68 <layout type="log4net.Layout.PatternLayout">
    69 <Header value="[Header]"/>
    70 <Footer value="[Footer]"/>
    71 <ConversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 信息类:%logger property:[%property{NDC}] - 信息描述:%message%newline"/>
    72 </layout>
    73 </appender>
    74 <root>
    75 <level value="INFO"/>
    76 <appender-ref ref="Log4Net_INFO"/>
    77 <appender-ref ref="AdoNetAppender"/>
    78 </root>
    79 </log4net>
    80 </configuration>
    View Code
  • 相关阅读:
    eval()函数的使用
    Ajax的GET,POST方法传输数据和接收返回数据
    使用目录
    安装目录
    c 文件输入和输出
    【C++王桂林】
    【C++】虚函数表vtable理解
    【C++】内存管理内幕阅读笔记
    git提交中的索引错误问题
    pydicom编辑、删除DICOM文件中病人相关信息
  • 原文地址:https://www.cnblogs.com/xiong2ge/p/log4net_base.html
Copyright © 2011-2022 走看看