国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

實現node日志管理

sevi_stuo / 377人閱讀

摘要:比如權限驗證,比如異常處理,比如日志管理。但突然有一天在線上訪問自己的項目,發現頁面報錯了,想知道為什么報錯了,發現竟然沒有什么很好的方法,如果我沒有通過一個東西去記錄的話,所以日志管理這個時候就顯得尤為重要了。

第一次寫node項目,之前除了前端的腳手架構建接觸過一些簡單的,所以總是碰到很多坑。比如權限驗證,比如異常處理,比如日志管理。
在看log4js使用方法的時候突然想到自己就可以實現簡單的業務,不需要借助組件,雖然簡單但是實現了挺開心的。

為什么需要日志管理

自己的node項目寫了一段時間了,但一直沒有加上日志管理的功能,因為覺得沒必要,很多時候都是在自己電腦上面調試的。
但突然有一天在線上訪問自己的項目,發現頁面報錯了,想知道為什么報錯了,發現竟然沒有什么很好的方法,如果我沒有通過一個東西去記錄的話,所以日志管理這個時候就顯得尤為重要了。

日志的產生過程

頁面出現錯誤

根據錯誤類型創建日志文件

寫入錯誤信息

創建日志方法的實現

先判斷要寫入的路徑是否存在,不存在則創建

判斷日志要創建在的文件夾存不存在,不存在則創建

判斷當前要創建的日志存不存在,存在繼續寫入,不存在則創建并寫入

fs.stat

檢查路徑是否存在

fs.mkdir

創建目錄的方法

fs.readFile

讀取文件的方法

fs.writeFile

寫入文件的方法

完成的寫入日志函數

我的業務是定義了兩個類型,錯誤和sql,然后傳入日志內容

/**
   * 寫入日志
   * @param {String} type // 日志類型 err 錯誤日志 sql sql日志
   * @param {String} content 
   */
writeLog (content, type = "err") {
    // 創建不存在的文件夾
    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)
      }
      // 寫入文件
      fs.writeFile(`log/file/${type}/${utils.switchTime(new Date(), "YYYY-MM-DD")}.log`, `${data || ""}
${content}`, async (err) => {
        if (err) {
          console.log(err)
        }
      })
    })
  }
使用 在sql執行函數上使用
function query (sql) {
  // 寫入sql
  NodeLog.writeLog(sql, "sql")
  return new Promise((resolve, reject) => {
    pool.getConnection((err, conn) => {
      if (err) {
        // 如果是連接斷開,自動重新連接
        if (err.code === "PROTOCOL_CONNECTION_LOST") {
          setTimeout(query(), 2000);
          reject("斷開重連");
        } else {
          console.error(err.stack || err);
          reject(err);
        }
      } else {
        // 得到結果
        conn.query(sql, (queryErr, result) => {
          if (queryErr) {
            reject(queryErr);
          } else {
            resolve(result);
          }
          // 釋放連接
          conn.release();
        })
      }
    })
  })
}
在異常處理函數中使用
  handleException (req, res, e) {
    // 寫入日志
    NodeLog.writeLog(e)
    
    res.json({
      code: e.errno || 20501,
      success: false,
      content: e,
      message: "服務器內部錯誤"
    })
  }
最后

日志完整代碼

node項目
對應的前端項目

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/104684.html

相關文章

  • LC3視角:Kubernetes下日志采集、存儲與處理技術實踐

    摘要:下需要為每個單獨進行采集配置采集日志目錄,采集規則,存儲目標等,不易維護。日志服務的日志架構實踐我們提出基于阿里云日志服務的日志處理架構,用以補充社區的方案,來嘗試解決場景下日志處理的一些細節體驗問題。 摘要: 在Kubernetes服務化、日志處理實時化以及日志集中式存儲趨勢下,Kubernetes日志處理上也遇到的新挑戰,包括:容器動態采集、大流量性能瓶頸、日志路由管理等問題。本文...

    Guakin_Huang 評論0 收藏0
  • Node.js + ELK 日志規范

    摘要:日志規范一般前端開發同學,對日志其實不太敏感,畢竟前端大多數情況下,不太關心日志。本文主要梳理了目前我們團隊在開發中日志方面存在的問題,以及通過統一日志規范,希望達到什么樣的效果。日志格式字段日志格式統一采用,便于解析處理。nodejs 日志規范 一般前端開發同學,對日志其實不太敏感,畢竟前端大多數情況下,不太關心日志。即使有,也可能調用一些第三方的統計,比如百度統計或者別的等。在 Node...

    tuomao 評論0 收藏0
  • schedule_task_monitor 前端批跑模塊介紹

    摘要:任務退出碼任務正常退出批跑模塊會接受到為,因為異常退出會接收到。主要注意的檢查項為連接未關閉等。每次任務退出后,批跑系統會檢測其是否為空,不為空則移動到目錄目錄下,并以版本號為文件夾存儲,以方便備份查看。 背景 隨著node的出現與發展,前端承擔了越來越多的職責。 前端也有越來越多的場景需要使用批跑腳本 利用爬蟲或者接口定時同步數據到DB 線上配置文件、數據文件定時批跑生成并發布到線...

    高勝山 評論0 收藏0
  • serverless在微店node領域的探索應用

    摘要:參與者流量來自于內部系統和外部流量,其中大部分來自于外部流量。水平擴容服務的水平擴容重要性不言而喻。 背景 目前微店中臺團隊為了滿足公司大部分產品、運營以及部分后端開發人員的嘗鮮和試錯的需求,提供了一套基于圖形化搭建的服務端接口交付方案,利用該方案及提供的系統可生成一副包含運行時環境定義可立即運行的工程代碼,最后,通過 某種serverless平臺 實現生成后代碼的部署、CI、運行、反...

    mikyou 評論0 收藏0
  • 數據同步——otter

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

    baiy 評論0 收藏0

發表評論

0條評論

sevi_stuo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<