最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node輸出日志的正確方法示例

 更新時間:2023年03月05日 14:34:04   作者:uniqueli  
這篇文章主要為大家介紹了Node輸出日志的正確方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

背景

每個程序員都喜歡在有問題的代碼中插入一些日志的方法來幫助調(diào)試程序,比如System.out.println或console.log。解決后,就會將這些語句刪除,周而復始。

但是通過系統(tǒng)日志輸出的日志格式都是這種:

// output
console.log("log"); // log
console.info("message"); // message
console.warn("Warning");// warning

現(xiàn)在想象一下,如果你在后端排查問題時,你有數(shù)百條這樣的信息。這樣的日志不僅很難知道消息級別或消息記錄的日期,而且過濾和排序日志也是一項艱巨的任務。

我們排查問題時,更期望看到這樣的日志:

{"level":"error","message":"Error message","timestamp":"2022-09-20T11:39:33.953Z"}

{"level":"warn","message":"Warning message","timestamp":"2022-09-20T11:39:33.957Z"}

{"level":"info","message":"Info message","timestamp":"2022-09-20T11:39:33.957Z"}

日志API就是為了解決這個問題而設計的。日志API的優(yōu)點:

  • 可以很容易地取消全部日志記錄,或者僅僅取消某個級別以下的日志,而且可以很容易地再次打開日志開關。
  • 可以很簡單的禁止日志記錄,因此,將這些日志代碼留在程序中的開銷很小。
  • 日志記錄可以被定向到不同的處理器,如在控制臺、文件等等。
  • 日志記錄器和處理器都可以記錄進行過濾,過濾器可以根據(jù)過濾器實現(xiàn)指定的標準丟棄那些無用的記錄。
  • 日志記錄可以采用不同的方式格式化,例如:純文本或JSON。
  • 應用程序可以使用多個日志記錄器。
  • 日志系統(tǒng)的配置由配置文件控制。

在 Node.js 應用中進行日志記錄是非常重要的,因為它可以幫助我們跟蹤應用程序中的問題和錯誤。接下來介紹 一下Node.js 的日志記錄技術。

使用 Winston 進行日志記錄

Winston是一個流行的、功能豐富的、靈活的Node.js日志庫。它使用的默認格式是JSON,但可以配置向多個存儲設備中發(fā)送日志,目前每周下載量接近1千萬。

安裝和使用 Winston

要使用 Winston,首先需要安裝它??梢允褂?npm 安裝 Winston:

npm install winston

安裝完成后,在應用程序中引入 Winston:

const winston = require('winston');

現(xiàn)在可以創(chuàng)建一個 Winston 實例,并開始記錄日志。以下是一個示例:

const winston = require('winston');
const logger = winston.createLogger({   
  level: 'info',   
  format: winston.format.json(),   
  transports: [     
    new winston.transports.Console(),     
    new winston.transports.File({ 
      filename: 'error.log', level: 'error' 
    })  
  ]
}); 
logger.info('Hello, world!');

在上面的示例中,創(chuàng)建了一個名為 logger 的 Winston 實例。指定了日志級別為 info,表示只記錄等級為 info 或更高的日志消息。我們還指定了一個 json 格式化器,以便記錄格式化的 JSON 日志消息。定義了兩個傳輸器,一個將日志消息記錄到控制臺,另一個將錯誤日志消息記錄到名為 error.log 的文件中。

Winston 的日志級別

Winston 支持多個日志級別,可以根據(jù)日志消息的嚴重程度選擇不同的日志級別來記錄。Winston 的日志級別從高到低分別為:

  • error:表示發(fā)生了錯誤
  • warn:表示警告性的信息
  • info:表示常規(guī)信息
  • verbose:表示詳細信息
  • debug:表示調(diào)試信息
  • silly:表示無關緊要的信息

Winston 的格式化器

Winston 的格式化器可以幫助我們格式化日志消息,以便更好地組織和分析日志數(shù)據(jù)。Winston 提供了多個內(nèi)置的格式化器,例如 jsonsimple、prettyPrint 等。我們也可以自定義格式化器,根據(jù)自己的需求來記錄日志數(shù)據(jù)。

以下是一個使用 json 格式化器記錄日志的示例:

const winston = require('winston'); 
const logger = winston.createLogger({   
  level: 'info',   
  format: winston.format.json(),   
  transports: [new winston.transports.Console()] 
}); 
logger.info({ message: 'Hello, world!', user: 'Alice' });

Winston 的傳輸器

Winston 支持多個傳輸器,可以將日志消息記錄到不同的目標中,例如控制臺、文件、數(shù)據(jù)庫、syslog 等。以下是一個將日志消息記錄到文件中的示例:

const winston = require('winston'); 
const logger = winston.createLogger({   
  level: 'info',   
  format: winston.format.simple(),   
  transports: [
    new winston.transports.File({ filename: 'app.log' })
  ] 
}); 
logger.info('Hello, world!');

在上面的示例中,我們使用 File 傳輸器將日志消息記錄到名為 app.log 的文件中。我們設置日志級別為 info,只記錄等級為 info 或更高的日志消息。

除了輸出到文件中,Winston還支持輸出控制臺、http請求以及流的方式。

我們也可以自定義輸出的方式,比如輸出到郵件、通過接口消息通知等等。

Winston的實踐

在實際使用過程中,我比較喜歡將console.log進行一次封裝。將 console.log 綁定到 logger.info 方法。每次調(diào)用 console.log 時,實際上是在調(diào)用 logger.info 方法。因此,日志消息將通過Winston的Console傳輸器發(fā)送到標準控制臺中和文件中。

const winston = require('winston');
const logger = winston.createLogger({
  transports: [
    new winston.transports.Console(),
    new winston.transports.File()
  ]
});
// 將 console.log 綁定到 logger.info 方法
console.log = logger.info.bind(logger); 
// 使用 console.log 記錄日志消息
console.log('Hello, Winston!');
console.log('This is a log message.');
// error 也可以綁定到logger上,但是建議輸出file時,指定新的文件名,方便后續(xù)的日志查看。
console.error = logger.error.bind(logger);

如果不在需要日志記錄時,可以直接設置level為off,就可以停止日志的記錄。

接入es

日志輸出和日志格式解決之后,為了方便檢索和更快的排查問題,可以將日志接入es。

下面是接入es后,通過kibana查看的結(jié)果:

將日志接入 Elasticsearch (ES) 的好處:

  • 快速檢索和分析:ES 是一種基于搜索引擎的分布式數(shù)據(jù)存儲和分析引擎,它提供了一種高效的方式來存儲和搜索大量的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。通過將日志接入 ES,我們可以使用 ES 強大的搜索和聚合功能來快速檢索和分析日志數(shù)據(jù)。
  • 實時監(jiān)控:ES 支持實時數(shù)據(jù)索引和搜索,因此可以實時監(jiān)控應用程序和系統(tǒng)的狀態(tài)和性能。通過將日志接入 ES,我們可以實時監(jiān)控應用程序和系統(tǒng)的日志,并在出現(xiàn)異?;蝈e誤時立即采取行動。
  • 可視化和報告:ES 提供了一種靈活和強大的可視化和報告工具,可以將日志數(shù)據(jù)可視化為圖表、儀表板和報告等形式。通過將日志接入 ES,我們可以使用這些工具來生成可視化報告,并幫助我們更好地理解和優(yōu)化應用程序和系統(tǒng)的性能。

注意事項

  • 日志級別,不要都使用info來使用,要區(qū)分不同的日志級別。
  • 日志的打印方式:同步和異步。
  • 日志體量的大?。篖OG系統(tǒng)就是直接寫磁盤文件,既然寫磁盤文件就牽扯到磁盤IO,而磁盤IO跟內(nèi)存讀寫有一個數(shù)量級的性能差別。

以上就是Node輸出日志的正確方法示例的詳細內(nèi)容,更多關于Node輸出日志的資料請關注腳本之家其它相關文章!

相關文章

  • NodeJS制作爬蟲全過程

    NodeJS制作爬蟲全過程

    這篇文章主要介紹了NodeJS制作爬蟲的全過程,包括項目建立,目標網(wǎng)站分析、使用superagent獲取源數(shù)據(jù)、使用cheerio解析、使用eventproxy來并發(fā)抓取每個主題的內(nèi)容等方面,有需要的小伙伴參考下吧。
    2014-12-12
  • windows離線環(huán)境安裝node-sass全過程

    windows離線環(huán)境安裝node-sass全過程

    文章介紹了如何在Windows系統(tǒng)上安裝和配置node-sass,并提供了一個詳細的步驟指南,首先,通過命令行查看支持版本;然后,下載對應版本的node-sass安裝包;接著,在npm配置文件中增加SASS_BINARY_PATH路徑配置;最后,執(zhí)行npmi命令完成安裝
    2024-12-12
  • nodejs實現(xiàn)獲取當前url地址及url各種參數(shù)值

    nodejs實現(xiàn)獲取當前url地址及url各種參數(shù)值

    這篇文章主要介紹了nodejs實現(xiàn)獲取當前url地址及url各種參數(shù)值,本文直接給出代碼實例,需要的朋友可以參考下
    2015-06-06
  • Centos7 中 Node.js安裝簡單方法

    Centos7 中 Node.js安裝簡單方法

    這篇文章主要介紹了Centos7 中 Node.js安裝簡單方法,非常不錯具有一定的參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • Windows上安裝Node-RED的實現(xiàn)

    Windows上安裝Node-RED的實現(xiàn)

    Node-RED是一個用于物聯(lián)網(wǎng)編程的工具,提供了一個基于瀏覽器的編程環(huán)境和豐富的節(jié)點類型,本文就來介紹一下Windows上安裝Node-RED的實現(xiàn),感興趣的可以了解一下
    2025-02-02
  • node實現(xiàn)批量上傳本地圖片轉(zhuǎn)為圖片CDN的項目實踐

    node實現(xiàn)批量上傳本地圖片轉(zhuǎn)為圖片CDN的項目實踐

    本文主要介紹了node實現(xiàn)批量上傳本地圖片轉(zhuǎn)為圖片CDN的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • nodejs提示:cross-device link not permitted, rename錯誤的解決方法

    nodejs提示:cross-device link not permitted, rename錯誤的解決方法

    這篇文章主要給大家介紹了關于nodejs提示:cross-device link not permitted, rename錯誤的解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用nodejs具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • nodejs配置express服務器運行自動打開瀏覽器詳細步驟

    nodejs配置express服務器運行自動打開瀏覽器詳細步驟

    在nodejs中使用express來搭建框架可以說是非常的簡單方便,下面這篇文章主要給大家介紹了關于nodejs配置express服務器運行自動打開瀏覽器的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • npm安裝慢的問題分析及解決方法

    npm安裝慢的問題分析及解決方法

    在Node.js開發(fā)過程中,npm install 是安裝和管理項目依賴的關鍵命令,然而,有時我們會遇到 npm install 運行卡住不動的情況,所以本文給大家介紹了npm安裝慢的問題分析及解決方法,需要的朋友可以參考下
    2025-03-03
  • node.js開機自啟動腳本文件

    node.js開機自啟動腳本文件

    這篇文章主要介紹了node.js開機自啟動腳本文件的方法和代碼,這里分享給大家,有需要的小伙伴參考下吧
    2014-12-12

最新評論

静海县| 德清县| 吉木乃县| 乐业县| 凤冈县| 巴南区| 英德市| 常宁市| 东阳市| 双江| 固安县| 汽车| 沿河| 古蔺县| 利津县| 平乡县| 峨眉山市| 郧西县| 武川县| 唐海县| 黄梅县| 冀州市| 沙坪坝区| 新巴尔虎左旗| 吉木乃县| 孝昌县| 曲沃县| 巴南区| 大兴区| 苍南县| 宿迁市| 东方市| 营口市| 樟树市| 钟山县| 西安市| 崇仁县| 曲麻莱县| 于都县| 桂平市| 大姚县|