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

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

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

Log4Net日志存儲

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

1、引言

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

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

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

pYYBAGL0ts-AFB-hAAAwo84_ixA535.png

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

pYYBAGL0ts-ATKxZAAJDyKwTHQA764.png

通過Nuget添加SQLite組件,如下所示:

poYBAGL0ttCAdrIiAAJloM0LCkg434.png

3、文本存儲

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

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

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

poYBAGL0ttGAPlEGAAKoj07QGO4741.png

配置文件編寫

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

poYBAGL0ttGARPH2AADaDWPYDko114.png

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

poYBAGL0ttGAU0uYAABlPv8AUkQ310.png

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

pYYBAGL0ttKAG7TqAAHnr_L4Wu0583.png

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

poYBAGL0ttKAR5U_AAB8c1DUKDw001.png

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

poYBAGL0ttKAOYtfAAAPwVZXB3s056.png

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

pYYBAGL0ttKAEnKDAAA-Sbx7MM4563.png

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

poYBAGL0ttKATk4hAAAekEpwa-k369.png

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

poYBAGL0ttOAdWNXAABF8VYgsEY050.png

4、SQLite存儲

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

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

通過SQLiteStudio軟件創(chuàng)建一個數(shù)據(jù)庫,取名為Log4NetSQLite,執(zhí)行以下腳本創(chuàng)建一個Log數(shù)據(jù)表:

pYYBAGL0ttOAHKkYAAAVbMvcIPw129.png

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

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

poYBAGL0ttOASNViAAEJ0nu_xZg497.png

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

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

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

pYYBAGL0ttOABNn-AAAUFmSqAy0519.png

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

poYBAGL0ttOARyntAABh0sY08bc169.png

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

pYYBAGL0ttSAJ-RZAADonkZUWqk506.png

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

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

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

    關(guān)注

    7

    文章

    3752

    瀏覽量

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

    關(guān)注

    0

    文章

    7

    瀏覽量

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

    關(guān)注

    27

    文章

    930

    瀏覽量

    54696
收藏 人收藏

    評論

    相關(guān)推薦

    Nginx日志分割方案

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

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

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

    MySQL中的redo log是什么

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

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

    log4j日志框架分析

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

    針對大量log日志快速定位錯誤地方

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

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

    一、Log4net 官方網(wǎng)站: 。 下載二進(jìn)制dll庫:包中提供了針對各個版本的dll庫: 二、使用日志庫 1. 添加庫 復(fù)制對應(yīng)的庫文件到項(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的日志框架使用

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

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

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

    MySQL三種日志講解

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

    基于Rust的Log日志庫介紹

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

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

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

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

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

    nginx日志配置方法

    access_log用來定義日志級別,日志位置。
    的頭像 發(fā)表于 10-24 17:43 ?173次閱讀