成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

實(shí)現(xiàn)node日志管理

sevi_stuo / 425人閱讀

摘要:比如權(quán)限驗(yàn)證,比如異常處理,比如日志管理。但突然有一天在線上訪問(wèn)自己的項(xiàng)目,發(fā)現(xiàn)頁(yè)面報(bào)錯(cuò)了,想知道為什么報(bào)錯(cuò)了,發(fā)現(xiàn)竟然沒(méi)有什么很好的方法,如果我沒(méi)有通過(guò)一個(gè)東西去記錄的話,所以日志管理這個(gè)時(shí)候就顯得尤為重要了。

第一次寫(xiě)node項(xiàng)目,之前除了前端的腳手架構(gòu)建接觸過(guò)一些簡(jiǎn)單的,所以總是碰到很多坑。比如權(quán)限驗(yàn)證,比如異常處理,比如日志管理。
在看log4js使用方法的時(shí)候突然想到自己就可以實(shí)現(xiàn)簡(jiǎn)單的業(yè)務(wù),不需要借助組件,雖然簡(jiǎn)單但是實(shí)現(xiàn)了挺開(kāi)心的。

為什么需要日志管理

自己的node項(xiàng)目寫(xiě)了一段時(shí)間了,但一直沒(méi)有加上日志管理的功能,因?yàn)橛X(jué)得沒(méi)必要,很多時(shí)候都是在自己電腦上面調(diào)試的。
但突然有一天在線上訪問(wèn)自己的項(xiàng)目,發(fā)現(xiàn)頁(yè)面報(bào)錯(cuò)了,想知道為什么報(bào)錯(cuò)了,發(fā)現(xiàn)竟然沒(méi)有什么很好的方法,如果我沒(méi)有通過(guò)一個(gè)東西去記錄的話,所以日志管理這個(gè)時(shí)候就顯得尤為重要了。

日志的產(chǎn)生過(guò)程

頁(yè)面出現(xiàn)錯(cuò)誤

根據(jù)錯(cuò)誤類型創(chuàng)建日志文件

寫(xiě)入錯(cuò)誤信息

創(chuàng)建日志方法的實(shí)現(xiàn)

先判斷要寫(xiě)入的路徑是否存在,不存在則創(chuàng)建

判斷日志要?jiǎng)?chuàng)建在的文件夾存不存在,不存在則創(chuàng)建

判斷當(dāng)前要?jiǎng)?chuàng)建的日志存不存在,存在繼續(xù)寫(xiě)入,不存在則創(chuàng)建并寫(xiě)入

fs.stat

檢查路徑是否存在

fs.mkdir

創(chuàng)建目錄的方法

fs.readFile

讀取文件的方法

fs.writeFile

寫(xiě)入文件的方法

完成的寫(xiě)入日志函數(shù)

我的業(yè)務(wù)是定義了兩個(gè)類型,錯(cuò)誤和sql,然后傳入日志內(nèi)容

/**
   * 寫(xiě)入日志
   * @param {String} type // 日志類型 err 錯(cuò)誤日志 sql sql日志
   * @param {String} content 
   */
writeLog (content, type = "err") {
    // 創(chuàng)建不存在的文件夾
    await this.dirExists(`log/file/${type}`)
    // 獲取到文件files
    fs.readFile(`log/file/${type}/${utils.switchTime(new Date(), "YYYY-MM-DD")}.log`, (err, data) => {
      if (err) {
        console.log(err)
      }
      // 寫(xiě)入文件
      fs.writeFile(`log/file/${type}/${utils.switchTime(new Date(), "YYYY-MM-DD")}.log`, `${data || ""}
${content}`, async (err) => {
        if (err) {
          console.log(err)
        }
      })
    })
  }
使用 在sql執(zhí)行函數(shù)上使用
function query (sql) {
  // 寫(xiě)入sql
  NodeLog.writeLog(sql, "sql")
  return new Promise((resolve, reject) => {
    pool.getConnection((err, conn) => {
      if (err) {
        // 如果是連接斷開(kāi),自動(dòng)重新連接
        if (err.code === "PROTOCOL_CONNECTION_LOST") {
          setTimeout(query(), 2000);
          reject("斷開(kāi)重連");
        } else {
          console.error(err.stack || err);
          reject(err);
        }
      } else {
        // 得到結(jié)果
        conn.query(sql, (queryErr, result) => {
          if (queryErr) {
            reject(queryErr);
          } else {
            resolve(result);
          }
          // 釋放連接
          conn.release();
        })
      }
    })
  })
}
在異常處理函數(shù)中使用
  handleException (req, res, e) {
    // 寫(xiě)入日志
    NodeLog.writeLog(e)
    
    res.json({
      code: e.errno || 20501,
      success: false,
      content: e,
      message: "服務(wù)器內(nèi)部錯(cuò)誤"
    })
  }
最后

日志完整代碼

node項(xiàng)目
對(duì)應(yīng)的前端項(xiàng)目

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/104684.html

相關(guān)文章

  • LC3視角:Kubernetes下日志采集、存儲(chǔ)與處理技術(shù)實(shí)踐

    摘要:下需要為每個(gè)單獨(dú)進(jìn)行采集配置采集日志目錄,采集規(guī)則,存儲(chǔ)目標(biāo)等,不易維護(hù)。日志服務(wù)的日志架構(gòu)實(shí)踐我們提出基于阿里云日志服務(wù)的日志處理架構(gòu),用以補(bǔ)充社區(qū)的方案,來(lái)嘗試解決場(chǎng)景下日志處理的一些細(xì)節(jié)體驗(yàn)問(wèn)題。 摘要: 在Kubernetes服務(wù)化、日志處理實(shí)時(shí)化以及日志集中式存儲(chǔ)趨勢(shì)下,Kubernetes日志處理上也遇到的新挑戰(zhàn),包括:容器動(dòng)態(tài)采集、大流量性能瓶頸、日志路由管理等問(wèn)題。本文...

    Guakin_Huang 評(píng)論0 收藏0
  • Node.js + ELK 日志規(guī)范

    摘要:日志規(guī)范一般前端開(kāi)發(fā)同學(xué),對(duì)日志其實(shí)不太敏感,畢竟前端大多數(shù)情況下,不太關(guān)心日志。本文主要梳理了目前我們團(tuán)隊(duì)在開(kāi)發(fā)中日志方面存在的問(wèn)題,以及通過(guò)統(tǒng)一日志規(guī)范,希望達(dá)到什么樣的效果。日志格式字段日志格式統(tǒng)一采用,便于解析處理。nodejs 日志規(guī)范 一般前端開(kāi)發(fā)同學(xué),對(duì)日志其實(shí)不太敏感,畢竟前端大多數(shù)情況下,不太關(guān)心日志。即使有,也可能調(diào)用一些第三方的統(tǒng)計(jì),比如百度統(tǒng)計(jì)或者別的等。在 Node...

    tuomao 評(píng)論0 收藏0
  • schedule_task_monitor 前端批跑模塊介紹

    摘要:任務(wù)退出碼任務(wù)正常退出批跑模塊會(huì)接受到為,因?yàn)楫惓M顺鰰?huì)接收到。主要注意的檢查項(xiàng)為連接未關(guān)閉等。每次任務(wù)退出后,批跑系統(tǒng)會(huì)檢測(cè)其是否為空,不為空則移動(dòng)到目錄目錄下,并以版本號(hào)為文件夾存儲(chǔ),以方便備份查看。 背景 隨著node的出現(xiàn)與發(fā)展,前端承擔(dān)了越來(lái)越多的職責(zé)。 前端也有越來(lái)越多的場(chǎng)景需要使用批跑腳本 利用爬蟲(chóng)或者接口定時(shí)同步數(shù)據(jù)到DB 線上配置文件、數(shù)據(jù)文件定時(shí)批跑生成并發(fā)布到線...

    高勝山 評(píng)論0 收藏0
  • serverless在微店node領(lǐng)域的探索應(yīng)用

    摘要:參與者流量來(lái)自于內(nèi)部系統(tǒng)和外部流量,其中大部分來(lái)自于外部流量。水平擴(kuò)容服務(wù)的水平擴(kuò)容重要性不言而喻。 背景 目前微店中臺(tái)團(tuán)隊(duì)為了滿足公司大部分產(chǎn)品、運(yùn)營(yíng)以及部分后端開(kāi)發(fā)人員的嘗鮮和試錯(cuò)的需求,提供了一套基于圖形化搭建的服務(wù)端接口交付方案,利用該方案及提供的系統(tǒng)可生成一副包含運(yùn)行時(shí)環(huán)境定義可立即運(yùn)行的工程代碼,最后,通過(guò) 某種serverless平臺(tái) 實(shí)現(xiàn)生成后代碼的部署、CI、運(yùn)行、反...

    mikyou 評(píng)論0 收藏0
  • 數(shù)據(jù)同步——otter

    摘要:阿里開(kāi)源項(xiàng)目,數(shù)據(jù)同步的解決方案。基于數(shù)據(jù)庫(kù)增量日志解析,支持?jǐn)?shù)據(jù)庫(kù)進(jìn)行同步在最新的已經(jīng)支持以及阿里云提供的數(shù)據(jù)庫(kù)使用童鞋的福音。 參考文獻(xiàn):Otter-入門(mén)篇1(阿里開(kāi)源項(xiàng)目Otter介紹) 一、背景 本人是一名應(yīng)屆畢業(yè)生,,還在努力挖坑。最近兩個(gè)月被外派到其他公司做一個(gè)升級(jí)系統(tǒng),做到現(xiàn)在一個(gè)多月。學(xué)到的東西很多,想總結(jié)的東西也很多,可是。。。時(shí)間是讓人猝不及防的東西。好吧,現(xiàn)在先來(lái)...

    baiy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<