0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Log4Net日志存儲(chǔ)

微云疏影 ? 來(lái)源:dotNet工控上位機(jī) ? 作者:dotNet工控上位機(jī) ? 2022-08-11 15:59 ? 次閱讀

1、引言

上位機(jī)開發(fā)中,日志記錄是必不可少的,我們可以通過(guò)日志記錄做日志分析及錯(cuò)誤追蹤。初學(xué)者會(huì)采用txt文本寫入來(lái)實(shí)現(xiàn)日志保存,但是文本寫入不是線程安全,當(dāng)存在多個(gè)線程同時(shí)寫入日志時(shí),就會(huì)出現(xiàn)一些問(wèn)題。Log4net庫(kù)是.Net下一個(gè)非常優(yōu)秀的開源日志記錄組件,是一個(gè)幫助開發(fā)者將日志信息輸出到各種目標(biāo)(控制臺(tái)、文件、數(shù)據(jù)庫(kù)等)的工具。本節(jié)主要采用開源組件Log4Net來(lái)實(shí)現(xiàn)錯(cuò)誤ERROR信息文本存儲(chǔ),并結(jié)合SQLite數(shù)據(jù)庫(kù),將日志INFO信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,便于后續(xù)的查詢。

2、開發(fā)準(zhǔn)備

首先新建一個(gè)Windows窗體應(yīng)用,取名為thinger.cn.Log4NetSQLitePro,UI界面設(shè)計(jì)如下所示:

pYYBAGL0ts-AFB-hAAAwo84_ixA535.png

通過(guò)Nuget添加Log4Net開源組件,如下所示:

pYYBAGL0ts-ATKxZAAJDyKwTHQA764.png

通過(guò)Nuget添加SQLite組件,如下所示:

poYBAGL0ttCAdrIiAAJloM0LCkg434.png

3、文本存儲(chǔ)

一般情況下,我們可以將一些錯(cuò)誤及異常信息存儲(chǔ)在文本中,便于隨時(shí)打開文件進(jìn)行查詢,文本存儲(chǔ)將自動(dòng)以天為單位,每天對(duì)應(yīng)一個(gè)文件,步驟如下:

添加一個(gè)應(yīng)用程序配置文件

項(xiàng)目右擊添加新建項(xiàng),項(xiàng)目類型選擇應(yīng)用程序配置文件,名稱為log4net.config,如下所示:

poYBAGL0ttGAPlEGAAKoj07QGO4741.png

配置文件編寫

日志配置文件增加相關(guān)節(jié)點(diǎn),如下所示:

poYBAGL0ttGARPH2AADaDWPYDko114.png

配置文件規(guī)定了日志信息的相關(guān)屬性、存儲(chǔ)方式、日志內(nèi)容格式等,配置信息如下所示:

poYBAGL0ttGAU0uYAABlPv8AUkQ310.png

其中,較為重要的是日志信息的格式,對(duì)應(yīng)上面文件中的ConversionPattern,值為"[%d]%n%m%n%n",每個(gè)占位符有對(duì)應(yīng)的含義,如下所示:

pYYBAGL0ttKAG7TqAAHnr_L4Wu0583.png

配置文件屬性中的復(fù)制到輸出目錄,設(shè)置為始終復(fù)制或如果較新則復(fù)制,如下圖所示:

poYBAGL0ttKAR5U_AAB8c1DUKDw001.png

項(xiàng)目的AssemblyInfo.cs類中添加一行代碼,如下所示:

poYBAGL0ttKAOYtfAAAPwVZXB3s056.png

添加一個(gè)LogHelper類,編寫2個(gè)Error的方法,如下所示:

pYYBAGL0ttKAEnKDAAA-Sbx7MM4563.png

在ini文本存儲(chǔ)按鈕事件下,調(diào)用錯(cuò)誤日志寫入,如下所示:

poYBAGL0ttKATk4hAAAekEpwa-k369.png

執(zhí)行完成后,在項(xiàng)目目錄,LogError目錄下,產(chǎn)生一條當(dāng)天日志命名的文件,打開如下所示:

poYBAGL0ttOAdWNXAABF8VYgsEY050.png

4、SQLite存儲(chǔ)

日志信息存儲(chǔ)到數(shù)據(jù)庫(kù)的好處在于便于用戶通過(guò)界面進(jìn)行查詢,這里采用開源免費(fèi)數(shù)據(jù)庫(kù)SQLite,其他關(guān)系型數(shù)據(jù)庫(kù),如SQLServer、mysql,原理都是一樣的,具體步驟如下所示:

創(chuàng)建數(shù)據(jù)庫(kù)及數(shù)據(jù)表

通過(guò)SQLiteStudio軟件創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),取名為L(zhǎng)og4NetSQLite,執(zhí)行以下腳本創(chuàng)建一個(gè)Log數(shù)據(jù)表:

pYYBAGL0ttOAHKkYAAAVbMvcIPw129.png

將數(shù)據(jù)庫(kù)文件復(fù)制到項(xiàng)目根目錄下的DataBase文件夾中

修改log4net.config文件,增加數(shù)據(jù)庫(kù)存儲(chǔ)相關(guān)配置,如下所示:

poYBAGL0ttOASNViAAEJ0nu_xZg497.png

bufferSize:日志緩存寫入條數(shù) 設(shè)置為0時(shí)只要有一條就立刻寫到數(shù)據(jù)庫(kù)

connectionString:SQLite指向的是數(shù)據(jù)庫(kù)文件的絕對(duì)路徑

LogHelper類中增加一個(gè)Info方法,如下所示:

pYYBAGL0ttOABNn-AAAUFmSqAy0519.png

在SQLite存儲(chǔ)按鈕事件下,調(diào)用Info日志寫入,如下所示:

poYBAGL0ttOARyntAABh0sY08bc169.png

執(zhí)行完成后,打開數(shù)據(jù)庫(kù),查看是否有相關(guān)記錄:

pYYBAGL0ttSAJ-RZAADonkZUWqk506.png

5、實(shí)際應(yīng)用

通過(guò)上面一系列的描述,相信大家對(duì)Log4Net的應(yīng)用有了一些了解,Log4Net構(gòu)建的日志系統(tǒng)是很多項(xiàng)目必備的一個(gè)功能,對(duì)項(xiàng)目開發(fā)、調(diào)試及后續(xù)維護(hù)都有著至關(guān)重要的作用。實(shí)際使用時(shí),我們還可以將Log4Ne作為一個(gè)簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)工具,甚至可以使用Log4Net做多表多庫(kù)存儲(chǔ)等等,大家在工作中,會(huì)經(jīng)常用到。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3735

    瀏覽量

    64171
  • 日志系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    6991
  • 上位機(jī)
    +關(guān)注

    關(guān)注

    27

    文章

    928

    瀏覽量

    54647
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Nginx日志分割方案

    nginx 默認(rèn)沒(méi)有提供對(duì)日志文件的分割功能,所以隨著時(shí)間的增長(zhǎng),access.log 和 error.log 文件會(huì)越來(lái)越大,尤其是 access.log,其
    發(fā)表于 06-19 15:05 ?426次閱讀
    Nginx<b class='flag-5'>日志</b>分割方案

    logcat如何查看Andriod log系統(tǒng)日志?

    logcat會(huì)輸出系統(tǒng)哪些信息呢?如何學(xué)習(xí)logcat命令?logcat如何查看Andriod log系統(tǒng)日志?如何查看Andriod log系統(tǒng)日志?
    發(fā)表于 03-03 06:15

    MySQL中的redo log是什么

    前言 說(shuō)到MySQL,有兩塊日志一定繞不開,一個(gè)是InnoDB存儲(chǔ)引擎的redo log(重做日志),另一個(gè)是MySQL Servce層的 binlog(歸檔
    的頭像 發(fā)表于 09-14 09:40 ?1976次閱讀

    LogMaster4Net日志服務(wù)器軟件

    LogMaster4Net.zip
    發(fā)表于 04-27 10:28 ?2次下載
    LogMaster<b class='flag-5'>4Net</b><b class='flag-5'>日志</b>服務(wù)器軟件

    詳解MySQL三大日志的作用

    MySQL日志 主要包括錯(cuò)誤日志、查詢日志、慢查詢日志、事務(wù)日志、二進(jìn)制日志幾大類。其中,比較重
    的頭像 發(fā)表于 07-22 14:44 ?1278次閱讀

    最全的Nginx日志分割教程

    nginx 默認(rèn)沒(méi)有提供對(duì)日志文件的分割功能,所以隨著時(shí)間的增長(zhǎng),access.log 和 error.log 文件會(huì)越來(lái)越大,尤其是 access.log,其
    的頭像 發(fā)表于 02-16 14:51 ?963次閱讀

    log4j日志框架分析

    og4j是Apache下的一款開源的日志框架,能夠滿足我們?cè)陧?xiàng)目中對(duì)于日志記錄的需求。log4j提供了簡(jiǎn)單的API調(diào)用,強(qiáng)大的日志格式定義以
    的頭像 發(fā)表于 02-28 14:32 ?1046次閱讀
    <b class='flag-5'>log4</b>j<b class='flag-5'>日志</b>框架分析

    針對(duì)大量log日志快速定位錯(cuò)誤地方

    用 grep 拿到的日志很少,我們需要查看附近的日志。我是這樣做的,首先: cat -n test.log | grep “關(guān)鍵詞” 得到關(guān)鍵日志的行號(hào)
    的頭像 發(fā)表于 04-21 09:22 ?650次閱讀

    C#上位機(jī)開發(fā)(十三)之使用Log4net添加日志記錄功能

    一、Log4net 官方網(wǎng)站: 。 下載二進(jìn)制dll庫(kù):包中提供了針對(duì)各個(gè)版本的dll庫(kù): 二、使用日志庫(kù) 1. 添加庫(kù) 復(fù)制對(duì)應(yīng)的庫(kù)文件到項(xiàng)目中: 2. 配置log4net 2.1. 創(chuàng)建配置文件添加后修改該文件設(shè)置:
    發(fā)表于 05-29 16:25 ?1次下載
    C#上位機(jī)開發(fā)(十三)之使用<b class='flag-5'>Log4net</b>添加<b class='flag-5'>日志</b>記錄功能

    Spring Boot的日志框架使用

    目前市面上常見(jiàn)的日志框架有:slf4j(Simple Logging Facade for Java)、logback、log4j、log4j2、commons-logging(Spr
    的頭像 發(fā)表于 06-02 10:59 ?884次閱讀
    Spring Boot的<b class='flag-5'>日志</b>框架使用

    服務(wù)器log日志大,掌握這些可正確快速定位錯(cuò)誤!

    針對(duì)大量log日志快速定位錯(cuò)誤地方
    的頭像 發(fā)表于 06-05 18:14 ?586次閱讀

    MySQL三種日志講解

    MySQL 日志包含了錯(cuò)誤日志、查詢日志、慢查詢日志、事務(wù)日志、二進(jìn)制日志等,如果
    的頭像 發(fā)表于 07-25 11:15 ?689次閱讀
    MySQL三種<b class='flag-5'>日志</b>講解

    基于Rust的Log日志庫(kù)介紹

    了一種簡(jiǎn)單的方法來(lái)實(shí)現(xiàn)日志記錄,本文將介紹如何使用Rust的Log庫(kù)作為日志門面,并結(jié)合env_logger和log4rs兩個(gè)日志庫(kù)的實(shí)戰(zhàn)用
    的頭像 發(fā)表于 09-19 14:49 ?3255次閱讀

    保護(hù)Log4j日志中的敏感數(shù)據(jù),兩步搞定!

    log4j在準(zhǔn)備添加日志消息時(shí)調(diào)用此方法。在MaskingAppender類中,我們覆蓋這個(gè)方法來(lái)攔截日志消息,使用maskSensitiveData()方法對(duì)敏感數(shù)據(jù)應(yīng)用masking,然后將修改后的消息傳遞給超類的appen
    的頭像 發(fā)表于 10-18 16:03 ?663次閱讀

    Log4cpp優(yōu)勢(shì)及優(yōu)點(diǎn)

    1、log4cpp概述 Log4cpp是一個(gè)開源的C++類庫(kù),它提供了C++程序中使用日志和跟蹤調(diào)試的功能,它的優(yōu)點(diǎn)如下: 提供應(yīng)用程序運(yùn)行上下文,方便跟蹤調(diào)試; 可擴(kuò)展的、多種方式記錄日志
    的頭像 發(fā)表于 11-09 14:27 ?615次閱讀
    <b class='flag-5'>Log4</b>cpp優(yōu)勢(shì)及優(yōu)點(diǎn)