2013-12-16 22 views
1

我有Web API,需要寫入日誌數據,無論是文件和數據庫。 是否可以配置這樣的設置?我想了解ILoggerRepository,但我很困惑。 有人可以給我一些關於如何配置它以及如何在應用程序中使用它的提示嗎?log4net的文件和數據庫多重配置

+0

試着具體說明您遇到的問題。如果你看,那裏有很多例子。如果您詢問具體問題的具體問題,您會得到更好的答覆。 –

+0

我相信log4net網站提供了有關該設置的詳細信息,你有沒有看看它們? – Kelmen

+1

是的,但沒有提到有關多個配置以及如何配置2個或更多配置,並在需要文件配置或數據庫配置時進行「切換」。 – reptildarat

回答

5

這聽起來像是你想同時寫給兩個不同風格的appender。

好消息是,這是建立在log4Net庫中的。

你想做什麼以便配置你配置文件到兩個不同的appender。一個文件Appender和一個數據庫appender。

不同的appender的例子可以在這裏找到。 http://logging.apache.org/log4net/release/config-examples.html

這是我一起鞭打的web.config的一個例子。你將不得不調整它來讓它爲你工作,但它會讓你在正確的開始。

最後一點,您的log4net配置不一定要在您的web.config中,但恕我直言,它只是讓事情更容易入門。擔心一旦你的web.config開始變得混亂一點,就把它分解出來。

<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 

    <log4net> 
    <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> 

    <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> 

    <root> 
     <level value="INFO" /> 
     <appender-ref ref="AdoNetAppender" /> 
     <appender-ref ref="FileAppender" /> 
    </root> 
    </log4net> 
</configuration>