欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何在Node.js服務中寫日志

小編給大家分享一下如何在Node.js服務中寫日志,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站是一家專業(yè)提供牟平企業(yè)網(wǎng)站建設,專注與網(wǎng)站建設、成都網(wǎng)站設計、H5頁面制作、小程序制作等業(yè)務。10年已為牟平眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設公司優(yōu)惠進行中。

Node 寫服務端的時候,比較頭疼的是排查定位問題,因為不像 Chrome 瀏覽器中,我們有直接的報錯提示在 dev tool 中,或者我們可以直接打斷點調(diào)試。

經(jīng)常我們會遇到在明明我在 test 環(huán)境可以啊,為什么 live 環(huán)境不行的問題。假如沒有日志,對于這種問題,根據(jù)毫無頭緒。

快速新建一個 koa 項目

先保證你全局安裝了 koa2

npm i koa2 -g

然后執(zhí)行:

koa2 -e node-log # 新建一個項目
cd node-log
npm i # 安裝依賴
npm run start # 啟動

基礎的服務就搭建起來了。訪問 http://localhost:3000/,就可以看到以下的頁面:

如何在Node.js服務中寫日志

以上是一個快速搭建 koa 服務的方法。這個項目中內(nèi)置了一個寫日志的庫——koa-logger。我們先來看看它做了什么東西吧。

koa-logger

這個庫比較簡單,記錄請求的基本信息,比如請求的方法、URl、用時等。作為中間件中使用,注意:推薦放在所有的中間件之前,這個跟 koa 的洋蔥模型有關。假如不是第一個,計算時間會不準確。

var logger = require('koa-logger');
app.use(logger());

在我們訪問響應的資源的時候,會在控制臺輸出相應的日志如下:

  <-- GET /
GET / - 14
  --> GET / 200 19ms 234b
  <-- GET /stylesheets/style.css
GET /stylesheets/style.css - 1
  --> GET /stylesheets/style.css 200 3ms 111b
  <-- GET /favicon.ico
GET /favicon.ico - 1
  --> GET /favicon.ico 404 1ms -

默認情況下,日志是通過 console 的方式直接輸出到控制臺中,假如我們需要對日志做自定義的操作,比如寫入到日志文件中等??梢酝ㄟ^類似完成,比如我記錄時間:

app.use(logger((str) => {
  console.log(new Date() + str)
  // redirect koa logger to other output pipe
  // default is process.stdout(by console.log function)
}))

結(jié)果:

Mon Oct 11 2021 19:28:41 GMT+0800 (China Standard Time)  <-- GET /
GET / - 10ms
Mon Oct 11 2021 19:28:41 GMT+0800 (China Standard Time)  --> GET / 200 20ms 226b
Mon Oct 11 2021 19:28:41 GMT+0800 (China Standard Time)  <-- GET /stylesheets/style.css
Mon Oct 11 2021 19:28:41 GMT+0800 (China Standard Time)  --> GET /stylesheets/style.css 200 4ms 111b

koa-log4js

koa-logger 比較輕量,也暴露了相對靈活的接口。但在實際業(yè)務中使用,我個人推薦使用 koa-log4js。主要理由如下:

  • koa-logger 看起來只支持中間件的使用方式,而不支持上報特定日志的功能。

  • 內(nèi)置的功能比較少。比如日志的分類和落盤等。

koa-log4js 對 log4js 做了一層包裝,從而支持 Koa 日志的中間件。它的配置和 log4js 是保持一致的。所以假如你用 log4js 的話,使用上應該是一致的。

使用

安裝:

npm i --save koa-log4

先來看使用,根目錄新建一個文件夾 log。并且新建一個文件夾 utils,在其中新建文件 logger.js。代碼如下:

const path = require('path');
const log4js = require('koa-log4');
const RUNTIME_PATH = path.resolve(__dirname, '../');
const LOG_PATH = path.join(RUNTIME_PATH, 'log');

log4js.configure({
  // 日志的輸出
  appenders: {
    access: {
      type: 'dateFile',
      pattern: '-yyyy-MM-dd.log', //生成文件的規(guī)則
      alwaysIncludePattern: true, // 文件名始終以日期區(qū)分
      encoding: 'utf-8',
      filename: path.join(LOG_PATH, 'access.log') //生成文件名
    },
    application: {
      type: 'dateFile',
      pattern: '-yyyy-MM-dd.log',
      alwaysIncludePattern: true,
      encoding: 'utf-8',
      filename: path.join(LOG_PATH, 'application.log')
    },
    out: {
      type: 'console'
    }
  },
  categories: {
    default: { appenders: [ 'out' ], level: 'info' },
    access: { appenders: [ 'access' ], level: 'info' },
    application: { appenders: [ 'application' ], level: 'all'}
  }
});

// getLogger 傳參指定的是類型
exports.accessLogger = () => log4js.koaLogger(log4js.getLogger('access')); // 記錄所有訪問級別的日志
exports.logger = log4js.getLogger('application');

簡單解釋一下,configurelog4js-node 的配置(后文會詳解),通過 getLogger 函數(shù)傳參為日志類型,比如 access 是訪問級別日志。

然后在 app.js 中加入:

const { accessLogger, logger } = require('./utils/logger');
app.use(accessLogger())

以及 routes/index.js 中加入:

+ const { logger } = require('../utils/logger')

router.get('/', async (ctx, next) => {
+  logger.info('我是首頁');
  await ctx.render('index', {
    title: 'Hello Koa 2!'
  })
})

刷新,可以看到在 log 文件夾中輸出兩個文件:

如何在Node.js服務中寫日志

分別記錄了:

[2021-10-12T10:43:33.914] [INFO] access - ::1 - - "GET / HTTP/1.1" 200 226 "" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36"
[2021-10-12T10:43:34.065] [INFO] access - ::1 - - "GET /stylesheets/style.css HTTP/1.1" 200 111 "http://localhost:3000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36"
[2021-10-12T10:43:33.902] [INFO] application - 我是首頁

接下來我們來看看 log4js 的配置。

level

日志的分級,主要作用是更好的展示日志(不同顏色)、有選擇的落盤日志,比如在生產(chǎn)中避免一些 debug 的敏感日志被泄露。log4js 默認有九個分級(你可以通過 levels 進行修改),如下:

{
  ALL: new Level(Number.MIN_VALUE, "ALL"),
  TRACE: new Level(5000, "TRACE"),
  DEBUG: new Level(10000, "DEBUG"),
  INFO: new Level(20000, "INFO"),
  WARN: new Level(30000, "WARN"),
  ERROR: new Level(40000, "ERROR"),
  FATAL: new Level(50000, "FATAL"),
  MARK: new Level(9007199254740992, "MARK"), // 2^53
  OFF: new Level(Number.MAX_VALUE, "OFF")
}

如下圖所示:

如何在Node.js服務中寫日志

只會輸出級別相等或者級別高的日志。比如你配置了 WARN,就不會輸出 INFO 的日志。 可以在下面配置的 categories 中配置不同的類型日志的日志級別。

categories

日志類別。必須配置默認日志類別,用于沒有命中的情況下的兜底行為。該配置為一個對象,key 值為分類名稱。比如上述 demo 中:

{
  default: { appenders: [ 'out' ], level: 'info' },
  access: { appenders: [ 'access' ], level: 'info' },
  application: { appenders: [ 'application' ], level: 'all'}
}

其中每個類別都有兩個配置 appenders 是一個字符串數(shù)組,是輸出配置(后文中會詳解),可以指定多個,至少要有一個。level 是上文日志級別。

appenders

解決了日志分級和分類,接下來是日志落盤,也就是輸出日志的問題。對應的配置是 appenders,該配置的 key 值為自定義的名稱(可以給 categories 中的 appenders 使用),屬性值為一個對象,配置輸出類型。如下所示:

// 日志的輸出
appenders: {
  access: {
    type: 'dateFile',
    pattern: '-yyyy-MM-dd.log', //生成文件的規(guī)則
    alwaysIncludePattern: true, // 文件名始終以日期區(qū)分
    encoding: 'utf-8',
    filename: path.join(LOG_PATH, 'access.log') //生成文件名
  },
  out: {
    type: 'console'
  }
}

其中,out 指的是通過 console 輸出,這個可以作為我們的一個兜底。accesstypedataFile,指的是輸出文件,然后配置文件的命名和輸出路徑。除了這個類型,詳情可以看官網(wǎng),比如 SMTP 通過郵件發(fā)送(這個需要 nodemailer

總結(jié)配置

日志分級、日志分類以及日志落盤,配置上的關系如下:

如何在Node.js服務中寫日志

以上是“如何在Node.js服務中寫日志”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當前標題:如何在Node.js服務中寫日志
文章鏈接:http://aaarwkj.com/article18/gdsegp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、Google軟件開發(fā)、微信公眾號、電子商務網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
日本在线有码中文视频| 午夜一区二区精品视频国产| 手机不卡高清播放一区二区| 2018在线不卡爱视频| 91桃色网站在线免费观看| 日本理伦片一区二区| 日韩免费的黄色片网站| 日日爱欧美精品亚洲成| 国产精品久久99粉嫩| 一区三区精品久久久精品| 国产一级成人免费视频| 国产毛片一区二区在线| 青青草原一区二区三区| 黄色国产欧美国产亚洲| 日本二区三区在线视频| 青青草视频在线好好热| 日韩成人高清免费在线| 中日中文av一区二区三区| 国产男女做爰在线视频| 亚洲国产成人91精品| 国产三级三级精品久久| 97国产一区二区精品久久呦| 四影虎影永久免费观看| 国产三级黄色大片在线免费看| 国产大神91一区二区三区| 九九99九九99九九精品在线观看 | 久久精品一区二区三区不卡| 午夜少妇诱惑一区二区三区| 亚洲成人自拍视频在线观看| 少妇午夜福利一区二区| 欧美日韩一区二区三区四区高清视频 | 欧美三级在线完整版免费| 亚洲情色精品国产一区| 中文字幕人妻系列东京热| 国产福利三级在线观看| av网址在线免费观看| 成人午夜激情在线免费观看| 日本少妇一区二区99| 色香蕉精品国产综合| 欧美日韩美足一区二区| 国语对白刺激真实精品|