標籤:extension config ext sys 引用 *** ring arch layout
本文轉自:http://www.cnblogs.com/PatrickLiu/p/6012153.html
最近在做一個項目的時候,需要增加一個日誌的功能,需要使用Log4Net記錄日誌,把資料插入到Oracle資料庫,經過好久的研究終於成功了。把方法記錄下來,以備以後查詢。 直接寫實現方法,分兩步完成: 1、使用NuGet Manager管理工具,增加對Oracle.ManagedDataAccess.dll的引用。 2、配置具體的檔案。<?xml version="1.0"?><configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <appSettings> <add key="log4net.Internal.Debug" value="true "/> </appSettings> <log4net> <!-- 產生資料的指令碼 Create table T_LogHistory ( id NUMBER not null, log_date DATE not null, log_thread VARCHAR2(50) not null, log_level VARCHAR2(50) not null, log_logger VARCHAR2(150) not null, log_operator VARCHAR2(50) not null, log_message VARCHAR2(500) not null, log_iP VARCHAR2(50) not null, log_machineName VARCHAR2(50) not null, log_browser VARCHAR2(50) not null, log_location VARCHAR2(500) not null, log_exception VARCHAR2(1500) not null, constraint pk_LogHistory primary key(id) ); Create Sequence seq_LogHistory_ID minvalue 1 maxvalue 9999999999999999999999999999 start with 1 increment by 1 nocache; --> <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender,log4net"> <!--BufferSize為緩衝區大小,只有日誌記錄超設定值才會一塊寫入到資料庫--> <bufferSize value="1" /> <!--或寫為<param name="BufferSize" value="10" />--> <!--引用--> <!--<connectionType value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>--> <connectionType value="Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/> <!--串連資料庫字串--> <connectionString value="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=80))(CONNECT_DATA=(SERVICE_NAME=databaseName)));User Id=*******;Password=*******;" /> <!--插入到表Log--> <commandText value="insert into t_loghistory(id, log_date, log_thread, log_level, log_logger, log_operator, log_message, log_ip, log_machinename, log_browser, log_location, log_exception) values(SEQ_LOGHISTORY_ID.nextval, :logDate, :thread, :log_level, :logger, :operator, :message, :clientIP, :machineName, :browser, :location, :exception)" /> <!--日誌記錄時間,RawTimeStampLayout為預設的時間輸出格式--> <parameter> <parameterName value=":logDate" /> <dbType value="DateTime"/> <layout type="log4net.Layout.RawTimeStampLayout"/> </parameter> <!--線程號--> <parameter> <parameterName value=":thread" /> <dbType value="String" /> <!--長度不可以省略,否則不會輸出--> <size value="100" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread" /> </layout> </parameter> <!--日誌等級--> <parameter> <parameterName value=":log_level" /> <dbType value="String" /> <size value="100" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <!--日誌記錄類名稱--> <parameter> <parameterName value=":logger" /> <dbType value="String" /> <size value="200" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <!--操作者。這個是自訂的輸出欄位,使用重新實現的布局器ReflectionLayout--> <parameter> <parameterName value=":operator" /> <!--設定為Int32時只有bufferSize的 value<="1"才正確輸出,沒有找出原因。--> <dbType value="String" /> <size value="200"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%username" /> </layout> </parameter> <!--IP地址--> <parameter> <parameterName value=":clientIP" /> <dbType value="String" /> <size value="20" /> <layout type="Enterprise.Framework.Logger.Extensions.ClientIPLayout,Enterprise.Framework.Logger"> <conversionPattern value="%ClientIP"/> </layout> </parameter> <!--機器名--> <parameter> <parameterName value=":machineName" /> <dbType value="String" /> <size value="100" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%property{log4net:HostName}" /> </layout> </parameter> <!--瀏覽器--> <parameter> <parameterName value=":browser" /> <dbType value="String" /> <size value="50" /> <layout type="Enterprise.Framework.Logger.Extensions.BrowserLayout"> <conversionPattern value="%Browser" /> </layout> </parameter> <!--日誌訊息--> <parameter> <parameterName value=":message" /> <dbType value="String" /> <size value="3000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter> <!--記錄日誌的位置--> <parameter> <parameterName value=":location" /> <dbType value="String" /> <size value="2000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%location" /> </layout> </parameter> <!--異常資訊。ExceptionLayout 為異常輸出的預設格式--> <parameter> <parameterName value=":exception" /> <dbType value="String" /> <size value="4000" /> <layout type="log4net.Layout.ExceptionLayout" /> </parameter> </appender> <root> <!--高 OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL 低--> <level value="ALL"/> <appender-ref ref="ADONetAppender" /> </root> <!--<logger name="StellaLogger"> <level value="ALL"/> <appender-ref ref="AdoNetAppender" /> </logger>--> </log4net></configuration> 完成上面兩步就可以實現Log4Net針對資料庫Oracle的記錄插入。天下國家,可均也;爵祿,可辭也;白刃,可蹈也;中庸不可能也
[轉]如何配置Log4Net使用Oracle資料庫記錄日誌