log4net日志功能使用

时间:2024-01-18 23:34:38

  早就想了解下log4net这个组件的使用,直至今日才有时间学习了一下,现在把学习的新的总结如下:

(1)、在项目中添加log4net.dll引用。说明:该版本是1.2.10.0 ,log4net for .net framework2.0

(2)、在Web.Config文件中添加如下配置代码:

............

<!--log4net配置 BEGIN-->
  <configSections>
       <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <!---日志记录器,可以有一个,也可以有多个-->
  <log4net>
    <logger name="AppLogger1">
      <level value="INFO"></level>
      <appender-ref ref="LogFileAppender"></appender-ref>
    </logger>
    <logger name="AppLogger2">
      <level value="DEBUG"></level>
      <appender-ref ref="rollingFile"></appender-ref>
    </logger>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="SysLog/ErrorLog.txt"/>
      <param name="AppendToFile" value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="Header" value="----------Start---------- "/>
        <param name="Footer" value="----------End---------- "/>
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] %X{auth} - %m%n"/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG"/>
        <param name="LevelMax" value="FATAL"/>
      </filter>
    </appender>
    <appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net">
      <param name="File" type="" value="log/"/>
      <param name="AppendToFile" value="true"/>
      <param name="RollingStyle" value="Date"/>
      <param name="DatePattern" value="yyyyMMdd"/>
      <param name="StaticLogFileName" value="false"/>
      <Layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
        <param name="Header" value="----------Start---------- "/>
        <param name="Footer" value="----------End---------- "/>
      </Layout>
    </appender>
  </log4net>
  <!--log4net配置 END-->

..................

(3)、在项目中添加一个Global.asax(全局应用程序类),在Application_Start()方法中添加如下一行代码:

void Application_Start(object sender, EventArgs e) 
    {
        // 在应用程序启动时运行的代码
        log4net.Config.XmlConfigurator.Configure();

}

(4)、按(2)步骤中红色部分标注,在项目根目录下,创建一个SysLog的文件夹,里面增加一个ErrorLog.txt的文本文件,用于记录错误日志的详细信息。

(5)、在Web.Config文件中添加数据库连接字符串的配置代码:(这里用到的MSSQL2000数据库,这里可以根据需要进行修改设置)

<appSettings>
    <add key="ConnectionString" value="Data Source=.;uid=sa;pwd=;Database=master"/>
  </appSettings>

(6)、这里只举简单例子作简单说明:

如在Default .aspx.cs文件中

1)、首先添加using System.Data.SqlClient;的命名空间引用。

2)、protected void Page_Load(object sender, EventArgs e)
              {
                    try
                   {
                            string conString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString1"];
                            SqlConnection con = new SqlConnection(conString);
                            con.Open();

Response.Write("<script language=JavaScript>alert('数据库连接成功!')</script>");

                   }
                   catch (Exception ex)
                   {
                            Response.Write("<script language=javascript>alert('数据库连接失败!')</script>");
                            log4net.ILog log = log4net.LogManager.GetLogger("AppLogger1");
                            log.Info("数据库连接失败,具体原因如下:", ex);
                   }
              }

这里的红色标记部分在Web.Config文件中配置的名称为ConnectionString,由于连接字符串书写错误,造成错误,这样的错误就在ErrorLog.txt文件中记录下来了。以下是摘自其中的日志信息。

----------Start----------
2009-10-14 10:21:54,093 [4] INFO  AppLogger1 [(null)] (null) - 数据库连接失败,具体原因如下:
System.InvalidOperationException: ConnectionString 属性尚未初始化。
   在 System.Data.SqlClient.SqlConnection.PermissionDemand()
   在 System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection)
   在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   在 System.Data.SqlClient.SqlConnection.Open()
   在 _Default.Page_Load(Object sender, EventArgs e) 位置 j:/asp.net3.5/log4net/Default.aspx.cs:行号 21
----------End----------