Cấu hình Log4net như thế nào (Phần 1)?

 

Bài viết này trình bày các cấu hình ví dụ cho việc xây dựng trong appenders. Các cấu hình được thiết kế để làm việc với các log4net.Config.DOMConfigurator và log4net.Repository.Hierarchy.Hierarchy này.

Những ví dụ này không có nghĩa là cấu hình đầy đủ cho các appenders. Đối với một danh sách đầy đủ các thông số có thể thể chỉ định cho từng appender và chi tiết hơn trên mỗi tùy chọn xem tài liệu SDK cho appender này.

AdoNetAppender: Để biết chi tiết đầy đủ xem tham khảo SDK mục: log4net.Appender.AdoNetAppender.

Những cấu hình của AdoNetAppender phụ thuộc vào nhà cung cấp lựa chọn cho các cơ sở dữ liệu mục tiêu. Dưới đây là một số ví dụ.

MS SQL Server: Ví dụ sau đây cho thấy làm thế nào với cấu hình các AdoNetAppender để log tin nhắn với một cơ sở dữ liệu SQL Server. Những sự kiện được viết bằng lô 100 (BufferSize). ConnectionType quy định cụ thể tên kiểu đủ điều kiện cho các System.Data.IDbConnection sử dụng để kết nối với cơ sở dữ liệu. ConnectionString là cơ sở dữ liệu nhà cung cấp cụ thể. CommandText là cả một tuyên bố đã chế biến hoặc thủ tục lưu trữ, trong trường hợp này nó có một prepared statement. Mỗi tham số lập báo cáo hoặc thủ tục lưu trữ được chỉ định bằng tên nó, kiểu cơ sở dữ liệu và cách bố trí mà renders giá trị cho tham số.

Định nghĩa bảng cơ sở dữ liệu có:

CREATE TABLE [dbo].[Log] (
     [Id] [int] IDENTITY (1, 1) NOT NULL,
     [Date] [datetime] NOT NULL,
     [Thread] [varchar] (255) NOT NULL,
     [Level] [varchar] (50) NOT NULL,
     [Logger] [varchar] (255) NOT NULL,
     [Message] [varchar] (4000) NOT NULL,
     [Exception] [varchar] (2000) NULL
)

Những cấu hình appender có:

 

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
   <bufferSize value="100" />
       <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
       <connectionString value="data source=[database server];initial catalog=[database  name];integrated security=false;persist security info=True;User ID=[user];Password=[password]" />
       <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
       <parameter>
          <parameterName value="@log_date" />
          <dbType value="DateTime" />
          <layout type="log4net.Layout.RawTimeStampLayout" />
       </parameter>
       <parameter>
          <parameterName value="@thread" />
          <dbType value="String" />
          <size value="255" />
          <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%thread" />
          </layout>
      </parameter>
      <parameter>
          <parameterName value="@log_level" />
          <dbType value="String" />
          <size value="50" />
          <layout type="log4net.Layout.PatternLayout">
                 <conversionPattern value="%level" />
           </layout>
       </parameter>
       <parameter>
              <parameterName value="@logger" />
              <dbType value="String" />
              <size value="255" />
              <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%logger" />
              </layout>
       </parameter>
       <parameter>
              <parameterName value="@message" />
              <dbType value="String" />
              <size value="4000" />
              <layout type="log4net.Layout.PatternLayout">
                   <conversionPattern value="%message" />
              </layout>
        </parameter>
        <parameter>
               <parameterName value="@exception" />
               <dbType value="String" />
               <size value="2000" />
               <layout type="log4net.Layout.ExceptionLayout" />
         </parameter>
</appender>