Log4net 使用文档例子

一般我们都会使用数据库和文件作为log的输出介质,下面是我在项目实践中总结到的经验:
1 .ADONetAppender
( 1 )、 MS SQL Server
define the table such as:
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
)

<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>
( 2 )、 MS Access  please reference the SDK of Log4net document   
( 3 )、 Oracle9i                                     log4net/release/config-examples.html
( 4 )、 Oracle8i
( 5 )、 DB2

2 、 FileAppender
<appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="log-file.txt" />
     <appendToFile value="true" />
     <layout type="log4net.Layout.PatternLayout">
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>

4.  RemotingAppender
传送日志事件到达一个特定的接受器,sink定义了这个接受器的地址,lossy定义了没有丢弃事件,bufferSize 定义了一个black的由95个事件打包发送的,而onlyFixPartialEventData可以忽律一些特定的事件。
<appender name="RemotingAppender" type="log4net.Appender.RemotingAppender" >
       <sink value="tcp://localhost:8085/LoggingSink" />
       <lossy value="false" />
       <bufferSize value="95" />
      <onlyFixPartialEventData value="true" />
</appender>

5.  RollingFileAppender
由于定义了staticLogFileName 为true,以我的理解就是定位保存的log文件个数为10个(maxSizeRollBackups),同时设定了每个文件的大小为100KB,所以一直都保持有10个文件。RollingStyle设定rolling的触发器。
Eg1:
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
     <file value="log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
   <maxSizeRollBackups value="10" />
   <maximumFileSize value="100KB" />
   <staticLogFileName value="true" />
   <layout type="log4net.Layout.PatternLayout">
   <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout>
</appender>

  eg2: 
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
       <file value="logfile" />
       <appendToFile value="true" />
       <rollingStyle value="Date" />
       <datePattern value="yyyyMMdd-HHmm" />
       <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
       </layout>
</appender>

eg3:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
       <file value="logfile" />
       <appendToFile value="true" />
       <rollingStyle value="Composite" />
       <datePattern value="yyyyMMdd" />
       <maxSizeRollBackups value="10" />
       <maximumFileSize value="1MB" />
       <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
</appender>

6.  UdpAppender
可以发送到远程地址的特定端口
<appender name="UdpAppender" type="log4net.Appender.UdpAppender">
       <localPort value="8080" />
       <remoteAddress value="224.0.0.1" />
       <remotePort value="8080" />
       <layout type="log4net.Layout.PatternLayout, log4net">
              <conversionPattern value="%-5level %logger [%property{NDC}] - %message%newline" />
       </layout>
</appender> 
log4net 的学习暂时告一段落了,希望能够进一步对log4j学习,现在我越来越喜欢.net的东西了,再也不会感觉到很别扭!希望自己可以很快地强大起来!!! 

posted on 2007-08-24 16:08  highmayor  阅读(1109)  评论(0编辑  收藏  举报

导航