套用的方式有幾個步驟需要說明
1、調整AssemblyInfo.cs檔
新增以下一行
[assembly: log4net.Config.DOMConfigurator()]
2、建立資料庫
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
)
3、在App.config或web.config上加上下列字段加在
<configsections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net">
</section></configsections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="LogFiles/"> <!--存放log檔案的路徑-->
<staticlogfilename value="false">
<appendtofile value="true">
<rollingstyle value="Date">
<datepattern value="yyyyMMdd.lo\g"> <!--log檔案的命名-->
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%-5p %date{yyyy/MM/dd HH:mm:ss} %-20c{1} %-20M %m%n">
</conversionpattern></layout>
</datepattern></rollingstyle></appendtofile></staticlogfilename></file></appender>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<buffersize value="2">
<connectiontype value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<connectionstring value="data source=[Your IP Address];initial catalog=[DataBaseName];integrated security=false;persist security info=True;User ID=[login name];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">
</layout></dbtype></parametername></parameter>
<parameter>
<parametername value="@thread">
<dbtype value="String">
<size value="255">
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%thread">
</conversionpattern></layout>
</size></dbtype></parametername></parameter>
<parameter>
<parametername value="@log_level">
<dbtype value="String">
<size value="50">
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%level">
</conversionpattern></layout>
</size></dbtype></parametername></parameter>
<parameter>
<parametername value="@logger">
<dbtype value="String">
<size value="255">
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%logger">
</conversionpattern></layout>
</size></dbtype></parametername></parameter>
<parameter>
<parametername value="@message">
<dbtype value="String">
<size value="4000">
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%message">
</conversionpattern></layout>
</size></dbtype></parametername></parameter>
<parameter>
<parametername value="@exception">
<dbtype value="String">
<size value="2000">
<layout type="log4net.Layout.ExceptionLayout">
</layout></size></dbtype></parametername></parameter>
</commandtext></connectionstring></connectiontype></buffersize></appender>
<root>
<level value="ALL">
<appender-ref ref="AdoNetAppender">
</appender-ref></level></root>
<logger name="WebForm1">
<level value="INFO">
<appender-ref ref="RollingFileAppender">
</appender-ref></level></logger>
</log4net>
在此用了2種appender,一個是直接記錄在文字檔內,即為name=RollingFileAppender的appender,另一個為將log記錄在SQL Server上,即為AdoNetAppender的appender。
而xml裡的<root></root>即為系統內預設的LogManager,若要使用別的LogManager,則用 <logger name=""></logger>的方式,使用方式在下面進行說明。
4、 在cs部步,則加上下面部份
public partial class LoginPage
{
//使用LogManager預設的Log, 記錄Log在資料庫內
public static readonly ILog TxtLog1 = LogManager.GetLogger(typeof(LoginPage));
//使用Log Name為WebForm1的Log,記錄Log在文字檔內
public static readonly ILog TxtLog2 = LogManager.GetLogger("WebForm1");
protected void Page_Load(object sender, EventArgs e)
{
TxtLog1.Info("DB Log:Start");
TxtLog2.Warn("File Log:Start");
}
}
這樣即可進行Log記錄
沒有留言:
張貼留言