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

Node.js 中 morgan 依賴及基本使用詳解

 更新時(shí)間:2025年02月18日 11:07:41   作者:yqcoder  
文章介紹了Node.js中`morgan`依賴的安裝、基本使用、日志格式(如`dev`、`combined`、`common`等),以及如何自定義日志格式和將日志寫入文件,感興趣的朋友一起看看吧

記錄每個(gè) HTTP 請(qǐng)求的詳細(xì)信息,方便開發(fā)者調(diào)試和監(jiān)控應(yīng)用程序。

一、安裝

npm install morgan

二、基本使用

const express = require("express");
const morgan = require("morgan");
const app = express();
// 使用 morgan 中間件,默認(rèn)日志格式為 'dev'
app.use(morgan("dev"));
app.get("/", (req, res) => {
  res.send("Hello, World!");
});
const port = 3000;
app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

三、日志格式

`morgan` 提供了多種內(nèi)置的日志格式,每種格式輸出的信息不同。

1. `dev`

這是開發(fā)環(huán)境常用的格式,輸出簡潔且包含顏色編碼,便于查看。示例輸出:

含義分別為:請(qǐng)求方法(`GET`)、請(qǐng)求路徑(`/`)、響應(yīng)狀態(tài)碼(`200`)、響應(yīng)時(shí)間(`3.029 ms`)和響應(yīng)內(nèi)容長度(`12`)。

GET / 200 3.029 ms - 12

2. `combined`

這是一種類似于 Apache 服務(wù)器的通用日志格式,包含客戶端 IP 地址、用戶代理等詳細(xì)信息。示例輸出:

::1 - - [24/Jan/2025:10:30:00 +0000] "GET / HTTP/1.1" 200 12 "http://localhost:3000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"

3. `common`

和 `combined` 格式類似,但不包含用戶代理信息。示例輸出:

::1 - - [24/Jan/2025:10:30:00 +0000] "GET / HTTP/1.1" 200 12

4. `short`

輸出的信息比 `dev` 格式多一些,但比 `combined` 格式簡潔。示例輸出:

::1 - GET / HTTP/1.1 200 12 - 3.029 ms

5. `tiny`

輸出最簡潔的日志信息,只包含請(qǐng)求方法、路徑、狀態(tài)碼、響應(yīng)內(nèi)容長度和響應(yīng)時(shí)間。示例輸出:

GET / 200 12 - 3.029 ms

四、自定義日志格式

使用 `morgan.token()` 方法定義了一個(gè)自定義的日志令牌 `custom-date`,用于輸出當(dāng)前時(shí)間的 ISO 格式。

const express = require("express");
const morgan = require("morgan");
const app = express();
// 自定義日志格式
morgan.token("custom-date", () => {
  return new Date().toISOString();
});
const customFormat =
  ":custom-date :method :url :status :res[content-length] - :response-time ms";
app.use(morgan(customFormat));
app.get("/", (req, res) => {
  res.send("Hello, World!");
});
const port = 3000;
app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

五、將日志寫入文件

`morgan` 還可以將日志信息寫入文件,而不只是輸出到控制臺(tái)。

const express = require("express");
const morgan = require("morgan");
const fs = require("fs");
const path = require("path");
const app = express();
// 創(chuàng)建一個(gè)寫入流(追加模式)
const accessLogStream = fs.createWriteStream(
  path.join(__dirname, "access.log"),
  { flags: "a" }
);
// 使用 morgan 并將日志寫入文件
app.use(morgan("combined", { stream: accessLogStream }));
app.get("/", (req, res) => {
  res.send("Hello, World!");
});
const port = 3000;
app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

這里使用 `fs.createWriteStream()` 方法創(chuàng)建一個(gè)寫入流,將 `morgan` 的日志信息追加到 `access.log` 文件中。

到此這篇關(guān)于Node.js 中 morgan 依賴詳解的文章就介紹到這了,更多相關(guān)Node.js morgan 依賴內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 開箱即用的Node.js+Mysql模塊封裝實(shí)現(xiàn)詳解

    開箱即用的Node.js+Mysql模塊封裝實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了開箱即用的Node.js+Mysql模塊封裝實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 詳解如何用typescript開發(fā)koa2的二三事

    詳解如何用typescript開發(fā)koa2的二三事

    這篇文章主要介紹了詳解如何用typescript開發(fā)koa2的二三事,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • 詳解Node.js如何處理ES6模塊

    詳解Node.js如何處理ES6模塊

    學(xué)習(xí)JavaScript語言,你會(huì)發(fā)現(xiàn)它有兩種格式的模塊。一種是ES6模塊,簡稱ESM;另一種是Node.js專用的CommonJS模塊,簡稱 CJS。這兩種模塊不兼容。很多人使用Node.js,只會(huì)用require()加載模塊,遇到ES6模塊就不知道該怎么辦。本文就來談?wù)凟S6模塊在Node.js里面怎么使用。
    2021-05-05
  • 關(guān)于Node.js中的JXcore打包示例

    關(guān)于Node.js中的JXcore打包示例

    這篇文章主要介紹了關(guān)于Node.js中的JXcore打包示例,JXcore 是一個(gè)支持多線程的 Node.js 發(fā)行版本,基本不需要對(duì)你現(xiàn)有的代碼做任何改動(dòng)就可以直接線程安全地以多線程運(yùn)行,需要的朋友可以參考下
    2023-05-05
  • Node.js同時(shí)安裝多個(gè)版本及相關(guān)配置指南(簡單易操作)

    Node.js同時(shí)安裝多個(gè)版本及相關(guān)配置指南(簡單易操作)

    在實(shí)際開發(fā)過程中我們可能需要安裝多個(gè)版本的 nodejs,下面這篇文章主要給大家介紹了關(guān)于Node.js同時(shí)安裝多個(gè)版本及相關(guān)配置的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 關(guān)于Node.js的events.EventEmitter用法介紹

    關(guān)于Node.js的events.EventEmitter用法介紹

    本篇文章主要介紹了關(guān)于Node.js的events.EventEmitter用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • Node.js+Express配置入門教程

    Node.js+Express配置入門教程

    Node.js是一個(gè)Javascript運(yùn)行環(huán)境(runtime)。本文給大家介紹Node.js+Express配置入門教程,值得推薦給大家,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • Centos7 中安裝 Node.js v4.4.4

    Centos7 中安裝 Node.js v4.4.4

    我一直對(duì)學(xué)習(xí)Node.js比較感興趣。這是一個(gè)Java平臺(tái)的服務(wù)器端編程 ,它允許開發(fā)人員在服務(wù)器編寫Java代碼,并且有許多CentOS的用戶正努力學(xué)習(xí)這個(gè)語言的開發(fā)環(huán)境。這正是我想做這個(gè)教程的目的。
    2016-11-11
  • Node.js服務(wù)端實(shí)戰(zhàn)之服務(wù)啟動(dòng)過程詳解

    Node.js服務(wù)端實(shí)戰(zhàn)之服務(wù)啟動(dòng)過程詳解

    這篇文章主要為大家介紹了Node.js服務(wù)端實(shí)戰(zhàn)之服務(wù)啟動(dòng)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • node.js中的socket.io的廣播消息

    node.js中的socket.io的廣播消息

    這篇文章主要介紹了node.js中的socket.io的廣播消息,需要的朋友可以參考下
    2014-12-12

最新評(píng)論

荥阳市| 余干县| 青神县| 临夏市| 和平区| 托克逊县| 平安县| 棋牌| 西乌| 游戏| 凉山| 元江| 霍山县| 东平县| 庆元县| 申扎县| 青河县| 永清县| 环江| 临城县| 陇南市| 理塘县| 博乐市| 华安县| 新密市| 广水市| 舟山市| 延庆县| 卢氏县| 忻城县| 绥芬河市| 德保县| 微博| 泗洪县| 南丰县| 威信县| 民权县| 册亨县| 宁化县| 庄河市| 拜泉县|