當前位置:首頁 » 操作系統 » log4net資料庫

log4net資料庫

發布時間: 2022-11-27 02:12:47

『壹』 log4net在c#開發中的實例,並將日誌輸出到sql資料庫

周公的博客-log4net使用詳解:
http://blog.csdn.net/zhoufoxcn/archive/2008/03/26/2220533.aspx
蠻詳細的。

『貳』 如何使用Log4net創建日誌及簡單擴展

1、概述
log4net是.Net下一個非常優秀的開源日誌記錄組件。log4net記錄日誌的功能非常強大。它可以將日誌分不同的等級,以不同的格式,輸出到不同的媒介。本文主要是介紹如何在Visual Studio2008中使用log4net快速創建系統日誌,如何擴展以輸出自定義欄位。
2、一個簡單的使用實例
第一步:在項目中添加對log4net.dll的引用,這里引用版本是1.2.10.0。
第二步:程序啟動時讀取log4net的配置文件。
如果是CS程序,在根目錄的Program.cs中的Main方法中添加:
log4net.Config.XmlConfigurator.Configure();
如果是BS程序,在根目錄的Global.asax.cs(沒有新建一個)中的Application_Start方法中添加:
log4net.Config.XmlConfigurator.Configure();
無論BS還是CS程序都可直接在項目的AssemblyInfo.cs文件里添加以下的語句:
[assembly: log4net.Config .XmlConfigurator()]
也可以使用自定義的配置文件,具體請參見4.4 關聯配置文件。
第三步:修改配置文件。如果是CS程序,則在默認的App.config文件(沒有新建一個)中添加內容;如果是BS程序,則添加到Web.config文件中,添加內容一樣,這里不再列出。
App.config文件添加內容如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config., log4net" />
</configSections>

<log4net>
<root>
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>

<logger name="testApp.Logging">
<level value="DEBUG"/>
</logger>

<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />

<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header] "/>
<param name="Footer" value="[Footer] "/>
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>

<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

</log4net>
</configuration>
第四步:在程序使用。
log4net.ILog log = log4net.LogManager.GetLogger("testApp.Logging");//獲取一個日誌記錄器
log.Info(DateTime.Now.ToString() + ": login success");//寫入一條新log
這樣就將信息同時輸出到控制台和寫入到文件名為「log-file.txt」的文件中,其中「log-file.txt」文件的路徑是當前程序運行所在目錄;也可以定義為絕對路徑,配置如:
<param name="File" value="C:\log-file.txt" />就寫入C盤根目錄下log-file.txt文件中,具體使用技巧參見4.2.1。

本例的實現請參見8.6附件。
3、Log4net的主要組成部分
3.1 Appenders
Appenders用來定義日誌的輸出方式,即日誌要寫到那種介質上去。較常用的Log4net已經實現好了,直接在配置文件中調用即可,可參見上面配置文件例子;當然也可以自己寫一個,需要從log4net.Appender.AppenderSkeleton類繼承。它還可以通過配置Filters和Layout來實現日誌的過濾和輸出格式。
已經實現的輸出方式有:
AdoNetAppender 將日誌記錄到資料庫中。可以採用SQL和存儲過程兩種方式。
AnsiColorTerminalAppender 將日誌高亮輸出到ANSI終端。
AspNetTraceAppender 能用asp.net中Trace的方式查看記錄的日誌。
BufferingForwardingAppender 在輸出到子Appenders之前先緩存日誌事件。
ConsoleAppender 將日誌輸出到應用程序控制台。
EventLogAppender 將日誌寫到Windows Event Log。
FileAppender 將日誌輸出到文件。
ForwardingAppender 發送日誌事件到子Appenders。
LocalSyslogAppender 將日誌寫到local syslog service (僅用於UNIX環境下)。
MemoryAppender 將日誌存到內存緩沖區。
NetSendAppender 將日誌輸出到Windows Messenger service.這些日誌信息將在用戶終端的對話框中顯示。
OutputDebugStringAppender 將日誌輸出到Debuger,如果程序沒有Debuger,就輸出到系統Debuger。如果系統Debuger也不可用,將忽略消息。
RemoteSyslogAppender 通過UDP網路協議將日誌寫到Remote syslog service。
RemotingAppender 通過.NET Remoting將日誌寫到遠程接收端。
RollingFileAppender 將日誌以回滾文件的形式寫到文件中。
SmtpAppender 將日誌寫到郵件中。
SmtpPickupDirAppender 將消息以文件的方式放入一個目錄中,像IIS SMTP agent這樣的SMTP代理就可以閱讀或發送它們。
TelnetAppender 客戶端通過Telnet來接受日誌事件。
TraceAppender 將日誌寫到.NET trace 系統。
UdpAppender 將日誌以無連接UDP數據報的形式送到遠程宿主或用UdpClient的形式廣播。
3.2 Filters
使用過濾器可以過濾掉Appender輸出的內容。過濾器通常有以下幾種:
DenyAllFilter 阻止所有的日誌事件被記錄
LevelMatchFilter 只有指定等級的日誌事件才被記錄
LevelRangeFilter 日誌等級在指定范圍內的事件才被記錄
LoggerMatchFilter 與Logger名稱匹配,才記錄
PropertyFilter 消息匹配指定的屬性值時才被記錄
StringMathFilter 消息匹配指定的字元串才被記錄
3.3 Layouts
Layout用於控制Appender的輸出格式,可以是線性的也可以是XML。
一個Appender只能有一個Layout。
最常用的Layout應該是經典格式的PatternLayout,其次是SimpleLayout,RawTimeStampLayout和ExceptionLayout。然後還有IRawLayout,XMLLayout等幾個,使用較少。Layout可以自己實現,需要從log4net.Layout.LayoutSkeleton類繼承,來輸出一些特殊需要的格式,在後面擴展時就重新實現了一個Layout。
SimpleLayout簡單輸出格式,只輸出日誌級別與消息內容。
RawTimeStampLayout 用來格式化時間,在向資料庫輸出時會用到。
樣式如「yyyy-MM-dd HH:mm:ss「
ExceptionLayout需要給Logger的方法傳入Exception對象作為參數才起作用,否則就什麼也不輸出。輸出的時候會包含Message和Trace。
PatterLayout使用最多的一個Layout,能輸出的信息很多,使用方式可參見上面例子中的配置文件。PatterLayout的格式化字元串見文後附註8.1。
3.4 Loggers
Logger是直接和應用程序交互的組件。Logger只是產生日誌,然後由它引用的Appender記錄到指定的媒介,並由Layout控制輸出格式。
Logger提供了多種方式來記錄一個日誌消息,也可以有多個Logger同時存在。每個實例化的Logger對象對被log4net作為命名實體(Named Entity)來維護。log4net使用繼承體系,也就是說假如存在兩個Logger,名字分別為a.b.c和a.b。那麼a.b就是a.b.c的祖先。每個Logger都繼承了它祖先的屬性。所有的Logger都從Root繼承, Root本身也是一個Logger。
日誌的等級,它們由高到底分別為:
OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
高於等級設定值方法(如何設置參見「配置文件詳解」)都能寫入日誌, Off所有的寫入方法都不寫到日誌里,ALL則相反。例如當我們設成Info時,logger.Debug就會被忽略而不寫入文件,但是FATAL, ERROR,WARN,INFO會被寫入,因為他們等級高於INFO。
在具體寫日誌時,一般可以這樣理解日誌等級:
FATAL(致命錯誤):記錄系統中出現的能使用系統完全失去功能,服務停止,系統崩潰等使系統無法繼續運行下去的錯誤。例如,資料庫無法連接,系統出現死循環。
ERROR(一般錯誤):記錄系統中出現的導致系統不穩定,部分功能出現混亂或部分功能失效一類的錯誤。例如,數據欄位為空,數據操作不可完成,操作出現異常等。
WARN(警告):記錄系統中不影響系統繼續運行,但不符合系統運行正常條件,有可能引起系統錯誤的信息。例如,記錄內容為空,數據內容不正確等。
INFO(一般信息):記錄系統運行中應該讓用戶知道的基本信息。例如,服務開始運行,功能已經開戶等。
DEBUG (調試信息):記錄系統用於調試的一切信息,內容或者是一些關鍵數據內容的輸出。
Logger實現的ILog介面,ILog定義了5個方法(Debug,Inof,Warn,Error,Fatal)分別對不同的日誌等級記錄日誌。這5個方法還有5個重載。以Debug為例說明一下,其它的和它差不多。
ILog中對Debug方法的定義如下:
void Debug(object message);
void Debug(object message, Exception ex);
還有一個布爾屬性:
bool IsDebugEnabled { get; }
如果使用Debug(object message, Exception ex),則無論Layout中是否定義了%exception,默認配置下日誌都會輸出Exception。包括Exception的Message和Trace。如果使用Debug(object message),則日誌是不會輸出Exception。
最後還要說一個LogManager類,它用來管理所有的Logger。它的GetLogger靜態方法,可以獲得配置文件中相應的Logger:
log4net.ILog log = log4net.LogManager.GetLogger("logger-name");
3.5 Object Renders
它將告訴logger如何把一個對象轉化為一個字元串記錄到日誌里。(ILog中定義的介面接收的參數是Object,而不是String。)
例如你想把Orange對象記錄到日誌中,但此時logger只會調用Orange默認的ToString方法而已。所以要定義一個OrangeRender類實現log4net.ObjectRender.IObjectRender介面,然後注冊它(我們在本文中的擴展不使用這種方法,而是直接實現一個自定義的Layout)。這時logger就會知道如何把Orange記錄到日誌中了。
3.6 Repository
Repository主要用於日誌對象組織結構的維護。

『叄』 log4net按照不同類型輸出到文件或資料庫么

這個應該配置兩個logger就可以了 不是兩個appender,然後你的兩個方法分別使用不同的log,這樣是不是就滿足你的要求了

『肆』 log4net到底有啥用

這個玩意可是及其的強悍,可以讓你按照自己的預想的格式輸出信息,包括輸出格式,而且開箱即用,可以使用多個log,定義很多的偵聽程序, 不同的級別,可以針對不同的級別情況輸出,也就是你可以控制輸出log的數量,如設置debug級別的話,所有debug以上級別都可以輸出,其餘的不輸出,你也可以輸出到文本,xml,資料庫,電子郵件,甚至任何自定義的輸出端

『伍』 如何使用 log4net 日誌框架

第一步:首先在項目中引用log4net.dll文件。
第二步:在Web.config文件中進行添加configSections的節點

復制代碼代碼如下:

<configSections>
<section name="log4net" type="log4net.Config., log4net"/>
<!--配置一個結點 名稱為log4net-->
</configSections>

第三步:添加log4net配置節點

復制代碼代碼如下:

<log4net debug="true">
</log4net>

然後在log4net節點下添加
寫入本地文本文件中的配置

復制代碼代碼如下:

<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<!--定義的是日誌記錄到文件的附著器 name表示該附著器的名稱-->
<!--在log4net中還有一個附著器RollingFileAppender 它表示會循環生成很多文件,舉例來說,就是設置一共可以生成20個文件,每個文件的大小為2K,那麼如果第一個、-->
<!--文件的大小超過2K,就會自動創建一個按順序命名的文件-->
<param name="File" value="c:\Log\DBLog.txt" /> <!--日誌記錄的存在路徑-->
<param name="AppendToFile" value="true" /><!--為true就表示日誌會附加到文件,為false,則會重新創建一個新文件-->
<layout type="log4net.Layout.PatternLayout">
<!--輸出內容控制-->
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>

注釋很清楚,就不解釋了。
寫入指定郵箱的配置

復制代碼代碼如下:

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<!--設置發送電子郵件的附著器-->
<authentication value="Basic" />
<to value="[email protected]" />
<from value="[email protected]" />
<username value="帳號" />
<password value="密碼" />
<subject value="程序異常日誌記錄郵件發送" />
<smtpHost value="smtp.163.com" />
<bufferSize value="512" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="debug"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
</layout>
</appender>

通過的是163郵箱伺服器發送
將日誌寫入資料庫的相關配置,還要建立一張對應的資料庫表

復制代碼代碼如下:

<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<!--存儲到資料庫的操作-->
<bufferSize value="10"/>
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<connectionString value="server=.;database=Log4Net;user id=sa;password=saa"/>
<commandText value="INSERT INTO _Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @log_thread, @log_level, @log_logger, @log_message, @log_exception)"/>
<parameter>
<parameterName value="@log_date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/><!--可以認為是記錄日誌的時間-->
</parameter>
<parameter>
<parameterName value="@log_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="@log_logger"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger"/><!--哪個記錄器存儲的該日誌-->
</layout>
</parameter>
<parameter>
<parameterName value="@log_message"/>
<dbType value="String"/>
<size value="4000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message"/><!--日誌信息-->
</layout>
</parameter>
<parameter>
<parameterName value="@log_exception"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.ExceptionLayout"/><!--異常信息-->
</parameter>
</appender>

『陸』 log4net 多進程不釋放緩存

log4net 多進程不釋放緩存,普通系統問題,緩存無法釋放,,沒有特別好的解決辦法,最簡單就是重裝系統。或者升級一下內存
log4net庫是Apache log4j框架在Microsoft .NET平台的實現,是一個幫助程序員將日誌信息輸出到各種目標(控制台、文件、資料庫等)的工具。
log4net是Apache軟體基金會Apache Logging Services工程的一部分。Apache日誌服務工程致力於為程序調試和審計提供跨語言的日誌服務。

『柒』 使用了log4net,發布系統後,發現無法寫日誌了,怎麼辦

在項目中配置第一步:首先在項目中引用log4net.dll文件。第二步:在Web.config文件中進行添加configSections的節點第三步:添加log4net配置節點然後在log4net節點下添加寫入本地文本文件中的配置注釋很清楚,就不解釋了。寫入指定郵箱的配置通過的是163郵箱伺服器發送將日誌寫入資料庫的相關配置,還要建立一張對應的資料庫表另外一種寫入文件的方式配置在log4net節點中還有兩個節點在框架的體系裡,所有的日誌對象都是根日誌(rootlogger)的後代。因此如果一個日誌對象沒有在配置文件里顯式定義,則框架使用根日誌中定義的屬性。在標簽里,可以定義level級別值和Appender的列表。如果沒有定義LEVEL的值,則預設為DEBUG。可以通過標簽定義日誌對象使用的Appender對象。聲明了在其他地方定義的Appender對象的一個引用。在一個logger對象中的設置會覆蓋根日誌的設置。而對Appender屬性來說,子日誌對象則會繼承父日誌對象的Appender列表。這種預設的行為方式也可以通過顯式地設定標簽的additivity屬性為false而改變。那麼上面就會有資料庫日誌的寫入和郵箱的寫入在Global.asax文件初始化配置調用運行一下Log4net中DEBUG、INFO、WARN、ERROR區分得很好。正常的DEBUG、INFO的日誌,就讓它記錄在日誌文件裡面吧。對於WARN、ERROR級別的日誌,記錄到日誌文件的同時,順便發送電子郵件到我的信箱裡面。這樣一來,我也不必每天去看日誌文件,二來,出了什麼問題,能及時通過電子郵件得到通知。資料庫結構

『捌』 如何利用log4Net自定義屬性配置功能記錄完整的日誌信息

如何利用log4Net自定義屬性配置功能記錄完整的日誌信息
log4Net作為專業的log記錄控制項,對於它的強大功能大家一定不陌生。下面我將詳細介紹如何利用其自定義屬性,讓日誌信息更完整。
一,創建測試工程,log4Net組件可以自己從網上下載,也可通過Nuget進行安裝。
二,創建日誌模型及資料庫表,因為我們的日誌信息可以輸出為文本,也可以輸出到資料庫。
三,添加MyLayout,MyPatternConverter類擴展PatternLayout。
四,添加Log4Net.config文件,進行輸入方式定義。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.,log4net"/>
</configSections>
<log4net>
<!-- ConversionPattern 解釋
%m(message):輸出的日誌消息,如ILog.Debug(…)輸出的一條消息
%n(new line):換行
%d(datetime):輸出當前語句運行的時刻
%r(run time):輸出程序從運行到執行到當前語句時消耗的毫秒數
%t(thread id):當前語句所在的線程ID
%p(priority): 日誌的當前優先順序別,即DEBUG、INFO、WARN…等
%c(class):當前日誌對象的名稱
%L:輸出語句所在的行號
%F:輸出語句所在的文件名
%-數字:表示該項的最小長度,如果不夠,則用空格填充
-->
<!--定義輸出到控制台命令行中-->
<logger name="myLogger">
<level value="ALL"/>
<appender-ref ref="ConsoleAppender" />
</logger>
<!--定義輸出到控制台命令行中-->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="Log4NetTest.MyLayout">
<param name="ConversionPattern" value="日誌時間:%d %n日誌級別:%-5p %n用 戶 ID:%Property{UserID} %n用戶姓名:%Property{UserName} %n日誌信息:%Property{Message} %n異常信息:%exception %n%n" />
</layout>
</appender>
<!--定義輸出到windows事件中-->
<appender name="WindowsAppender" type="log4net.Appender.EventLogAppender">
<layout type="Log4NetTest.MyLayout">
<param name="ConversionPattern" value="日誌時間:%d %n日誌級別:%-5p %n用 戶 ID:%Property{UserID} %n用戶姓名:%Property{UserName} %n日誌信息:%Property{Message} %n異常信息:%exception %n%n" />
</layout>
</appender>
<!--定義輸出到文件中-->
<appender name="TextAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="RollingStyle" value="Date" />
<layout type="Log4NetTest.MyLayout">
<param name="ConversionPattern" value="日誌時間:%d %n日誌級別:%-5p %n用 戶 ID:%Property{UserID} %n用戶姓名:%Property{UserName} %n日誌信息:%Property{Message} %n異常信息:%exception %n%n" />
</layout>
</appender>
<!--定義輸出到資料庫-->
<appender name="DataBaseAppender" type="log4net.Appender.AdoNetAppender">
<!--日誌緩存寫入條數-->
<bufferSize value="1" />
<!--日誌資料庫連接串-->
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source=.\SQL2008;initial catalog=Demo;integrated security=false;persist security info=True;User ID=sa;Password=1qaz" />
<!--日誌資料庫腳本-->
<commandText value="INSERT INTO LogInfo ([LogDate],[LogLevel],[UserId],[UserName],[Message],[Exception]) VALUES (@LogDate, @LogLevel,@UserId,@UserName, @Message, @Exception)" />
<!--日誌時間LogDate -->
<parameter>
<parameterName value="@LogDate" />
<dbType value="String" />
<size value="30" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss}" />
</layout>
</parameter>
<!--日誌類型LogLevel -->
<parameter>
<parameterName value="@LogLevel" />
<dbType value="String" />
<size value="10" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<!--自定義UserId -->
<parameter>
<parameterName value="@UserId" />
<dbType value="String" />
<size value="20" />
<layout type="Log4NetTest.MyLayout">
<conversionPattern value="%Property{UserID}" />
</layout>
</parameter>
<!--自定義UserName -->
<parameter>
<parameterName value="@UserName" />
<dbType value="String" />
<size value="50" />
<layout type="Log4NetTest.MyLayout">
<conversionPattern value="%Property{UserName}" />
</layout>
</parameter>
<!--自定義Message -->
<parameter>
<parameterName value="@Message" />
<dbType value="String" />
<size value="200" />
<layout type="Log4NetTest.MyLayout">
<conversionPattern value="%Property{Message}" />
</layout>
</parameter>
<!--異常信息Exception -->
<parameter>
<parameterName value="@Exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
</log4net>
</configuration>
五,添加LogHelper.cs類進行各自信息的寫入操作。
using System;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
using log4net;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Log4NetTest
{
public class LogHelper
{
/// <summary>
/// LoggerName
/// </summary>
public static string LoggerName = string.Empty;
/// <summary>
/// 用戶ID
/// </summary>
public static string UserID = string.Empty;
/// <summary>
/// 用戶名稱
/// </summary>
public static string UserName = string.Empty;
private static ILog iLog;
private static LogEntity logEntity;
/// <summary>
/// 介面
/// </summary>
private static ILog log
{
get
{
string path = Application.StartupPath + @"\Log4Net.config";
log4net.Config.XmlConfigurator.Configure(new FileInfo(path));
if (iLog == null)
{
iLog = log4net.LogManager.GetLogger(LoggerName);
}
else
{
if (iLog.Logger.Name != LoggerName)
{
iLog = log4net.LogManager.GetLogger(LoggerName);
}
}
return iLog;
}
}
/// <summary>
/// 構造消息實體
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
private static LogEntity BuildMessageMode(string message)
{
if (logEntity == null)
{
logEntity = new LogEntity();
logEntity.UserID = UserID;
logEntity.UserName = UserName;
logEntity.Message = message;
}
else
logEntity.Message = message;
return logEntity;
}
/// <summary>
/// 調試
/// </summary>
/// <param name="message">消息</param>
public static void Debug(string message)
{
if (log.IsDebugEnabled)
log.Debug(BuildMessageMode(message));
}
/// <summary>
/// 調試
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">異常</param>
public static void Debug(string message, Exception ex)
{
if (log.IsDebugEnabled)
log.Debug(BuildMessageMode(message), ex);
}
/// <summary>
/// 信息
/// </summary>
/// <param name="message">消息</param>
public static void Info(string message)
{
if (log.IsInfoEnabled)
log.Info(BuildMessageMode(message));
}
/// <summary>
/// 信息
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">異常</param>
public static void Info(string message, Exception ex)
{
if (log.IsInfoEnabled)
log.Info(BuildMessageMode(message), ex);
}
/// <summary>
/// 一般錯誤
/// </summary>
/// <param name="message">消息</param>
public static void Error(string message)
{
if (log.IsErrorEnabled)
log.Error(BuildMessageMode(message));
}
/// <summary>
/// 一般錯誤
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">異常</param>
public static void Error(string message, Exception exception)
{
if (log.IsErrorEnabled)
log.Error(BuildMessageMode(message), exception);
}
/// <summary>
/// 警告
/// </summary>
/// <param name="message">消息</param>
public static void Warn(string message)
{
if (log.IsWarnEnabled)
log.Warn(BuildMessageMode(message));
}
/// <summary>
/// 警告
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">異常</param>
public static void Warn(string message, Exception ex)
{
if (log.IsWarnEnabled)
log.Warn(BuildMessageMode(message), ex);
}
/// <summary>
/// 嚴重
/// </summary>
/// <param name="message">消息</param>
public static void Fatal(string message)
{
if (log.IsFatalEnabled)
log.Fatal(BuildMessageMode(message));
}
/// <summary>
/// 嚴重
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">異常</param>
public static void Fatal(string message, Exception ex)
{
if (log.IsFatalEnabled)
log.Fatal(BuildMessageMode(message), ex);
}
}
}
六,進行日誌效果測試,只要通過修改Log4Net.config,就可實現各種方式的輸入。
輸出到控制台:
<logger name="myLogger">
<level value="ALL"/>
<appender-ref ref="ConsoleAppender" />
</logger>
輸出到文件:
<logger name="myLogger">
<level value="ALL"/>
<appender-ref ref="TextAppender" />
</logger>
輸出到資料庫:
<logger name="myLogger">
<level value="ALL"/>
<appender-ref ref="DataBaseAppender" />
</logger>

『玖』 我配置完log4net操作資料庫的,為什麼不往資料庫里寫入信息

殺毒

『拾』 如何配置Log4Net使用Oracle資料庫記錄日誌

一、前提條件

系統必須是使用LOG4J進行日誌管理,否則方法無效。

系統必須包含commons-logging-xxx.jar,log4j-xxx.jar這兩個JAR包,XXX為版本號。

二、操作步驟

1、創建日誌表

要把日誌持久化,必須在資料庫中創建一張用來存儲日誌信息的表,表內欄位為日誌

的一個主要屬性包括:操作類,執行方法,列印時間,日誌級別,日誌內容。

CREATE TABLE RESLOG (LOGID VARCHAR2(20) NOT NULL,

CLASS VARCHAR2(200),

METHOD VARCHAR2(100),

CREATETIME DATE,

LOGLEVEL VARCHAR2(50),

MSG VARCHAR2(4000))

因為存儲的類為類的全部路徑,所以CLASS欄位長度需要比較大。

2、日誌管理配置

LOG4J主要有兩種配置文件.properties和.xml,這里以properties文件為基礎來講

述,關於XML文件的配置,相信大家看完下面的介紹也一樣能輕松完成。

通常在LOG4J.PROPERTIES文件的第一行是:

log4j.rootLogger= XXX,這句是控制日誌的輸出,如果想吧日誌輸出到資料庫,

則需要在XXX中添加「DB」,如log4j.rootLogger=INFO,stdout,Platform,db。上面

這句就是把日誌中級別為INFO的信息輸出到STDOUT,PLATFORM和DB

(DATABASE)中。

配置好如上的信息,LOG4J就知道用戶是想把信息存入資料庫,接下來我們就要來

配置資料庫的相關信息(包括緩存,資料庫連接信息,和執行SQL),配置信息如下:

###JDBCAppender
log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender

//這個配置是選擇使用JDBCAppender方法,將日誌信息存儲到資料庫。當然,如果你還要做其他操作,可以自己寫個類,繼承JDBCAppender就OK了。
log4j.appender.db.BufferSize=1

//這個配置是告訴LOG4J,有多少條日誌信息後才存入資料庫,我這里是1,就是說有一條就查一條,顯然這樣在生產環境下是很影響系統性能的。
log4j.appender.db.driver=oracle.jdbc.driver.OracleDriver

//這個配置是告訴LOG4J,做資料庫存儲所用的驅動。
log4j.appender.db.URL=jdbc:oracle:thin:@<ip>:<port>:<sid>

//這個配置資料庫連接的URL,不用說也都知道。
log4j.appender.db.user=XXX
log4j.appender.db.password=XXX

//上面兩個是資料庫連接時的用戶名和密碼
log4j.appender.db.sql=insert into RESLOG

(LogId,Class,Method,createTime,LogLevel,MSG)

values (SQ_RESLOG_LOGID.Nextval,'%C','%M',

to_date('%d{yyyy-MM-dd HH:mm:ss}','yyyy-MM-dd

HH24:mi:ss'),'%p','%m')

//這個配置是告訴當LOG4J吧日誌存儲資料庫時用的SQL語句。SQ_RESLOG_LOGID.Nextval是我建的一個SEQUENCE;『%C』是日誌中的CLASS;『%M』是列印日誌是執行到類里的方法;『%d』是列印的時間,它支持格式化;『%P』是日誌級別,包括INFO、DEBUG、ERROR等;『%m』是MSG,日誌內容。注意這里的參數區分大小寫。
log4j.appender.db.layout=org.apache.log4j.PatternLayout

通過上面的配置,現在再啟動服務,LOG4J就會自動把原來存儲在.LOG文件中的信息,同時存儲到資料庫了。

熱點內容
隨時解壓 發布:2024-04-25 14:58:11 瀏覽:67
三率源碼 發布:2024-04-25 14:42:41 瀏覽:467
javastring轉string數組 發布:2024-04-25 14:42:10 瀏覽:136
飢荒如何更改密碼 發布:2024-04-25 14:42:02 瀏覽:743
百度雲如何解壓zip 發布:2024-04-25 14:38:57 瀏覽:570
母豬怎麼配置最好 發布:2024-04-25 14:35:47 瀏覽:75
php按鈕代碼 發布:2024-04-25 14:32:10 瀏覽:725
php數據類型轉換 發布:2024-04-25 14:15:17 瀏覽:750
windows調度演算法 發布:2024-04-25 14:14:28 瀏覽:456
下載喵星大作戰需要什麼配置 發布:2024-04-25 14:14:22 瀏覽:304