一般我們都會使用數(shù)據(jù)庫和文件作為log的輸出介質(zhì),下面是我在項目實踐中總結(jié)到的經(jīng)驗:
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個事件打包發(fā)送的,而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文件個數(shù)為10個(maxSizeRollBackups),同時設定了每個文件的大小為100KB,所以一直都保持有10個文件。RollingStyle設定rolling的觸發(fā)器。
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
可以發(fā)送到遠程地址的特定端口
<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學習,現(xiàn)在我越來越喜歡.net的東西了,再也不會感覺到很別扭!希望自己可以很快地強大起來!!!?