日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Node.js学习笔记(九)#log4js日志管理

發布時間:2024/3/26 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Node.js学习笔记(九)#log4js日志管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、log4js簡介

二、log4js使用[圖片]

1.安裝

2.導入

3.配置

4.添加實例

5.輸出日志

三、log4js日志等級

四、log4js配置信息

1.appenders 輸出源

① type - console

② type - stdout

③ type - stderr

④ type - file

⑤ type - datefile

2.layout 布局

① type - basic

② type - colored

③ type - messagePassThrough

④ type - dummy

⑤ type - pattern

3.categories 類別


一、log4js簡介

log4js是node日志管理工具,可以將項目中的一些輸出內容更優雅地儲存起來。由于node.js是后端項目,console.log()僅僅只能在控制臺輸出。所以當我們項目部署到服務器上時,日志管理工具顯得尤為重要,log4js可以第一時間讓我們獲取到項目實時日志信息。

二、log4js使用[圖片]

1.安裝

npm install log4js

2.導入

const log4js = require('log4js')

3.配置

log4js主要配置 appenderscategories ,后面會詳細介紹。

log4js.configure({appenders: { // 輸出源out: { type: "stdout" },app: { type: "file", filename: "application.log" },err: { type: 'stderr' }},categories: { // 類別default: { appenders: ["out", "app"], level: "debug" },normal: { appenders: ["out", "app"], level: "info" },err: { appenders: ["err"], level: "error" }}, })

4.添加實例

實例中傳的參數對應 categories 中的屬性名,如果找不到或者沒傳,則默認使用 default

const logger = log4js.getLogger("normal")

5.輸出日志

logger.info("我是信息日志") logger.error("我是錯誤日志")

三、log4js日志等級

日志等級從低到高分為6個等級

trace - 最低等級

debug

info

warn

error

fatal - 最高等級

我們在categories中設置level時,會將設置的級別以下的日志內容過濾,不予展示。

四、log4js配置信息

1.appenders 輸出源

appenders 輸出源是一個對象類型,他可以包含多個輸出源,并在 categories 類別中導出。格式如下:其中 type 是必填的,根據不同的 type 類型,有附加的其他屬性。

log4js.configure({appenders: { // 輸出源key1: { type: "value1" },key2: { type: "value2" },key3: { type: "value3", …… },……}categories: { default: { appenders: ["key1","key2","key3",……], level: "info" } } })

appenders常用的輸出源有如下幾種:

① type - console

將log輸出到控制臺。

但是大量輸出寫入控制臺會占用大量內存,避免此問題可以將type設置為stdout。

log4js.configure({appenders: { console: { type: "console" } },categories: { default: { appenders: ["console"], level: "info" } } })

② type - stdout

將log寫入標準輸出流

默認情況下,stdout是行緩沖的,他的輸出會放在一個buffer里面,只有到換行的時候,才會輸出到屏幕。

log4js.configure({appenders: { out: { type: "stdout" } },categories: { default: { appenders: ["out"], level: "info" } } })

③ type - stderr

將log寫入標準錯誤流。

一般情況下,stderr用于輸出錯誤日志,需要將level設置為error。

log4js.configure({appenders: { err: { type: "stderr" } },categories: { default: { appenders: ["err"], level: "error" } } })

④ type - file

將log寫入文件中。

它提供了如下屬性:

  • filename - 文件寫入路徑
  • maxLogSize - 設置日志最大大小(以字節為單位),若不設置或為0則不會發生日志滾動。可以接受大小后綴為K, M, G的字符串,例如1K, 1M, 1G
  • backups - 在日志滾動期間要保留的舊日志文件的數量,默認為5
  • layout - 布局,默認basic layout
  • encoding - 編碼格式,默認“utf-8”
  • mode - 文件模式,默認0o600
  • flags - 標識符,默認為‘a’
  • compress - 是否壓縮,如果為true則生成.gz后綴的日志壓縮文件,默認為false
  • keepFileExt - 滾動日志文件時保留文件擴展名,默認為false
  • fileNameSep - 滾動時的文件名分隔符,默認為‘.’
log4js.configure({appenders: {everything: {type: "file",filename: "all-the-logs.log",maxLogSize: 10485760,backups: 3,encoding: "utf-8",compress: true,},},categories: {default: { appenders: ["everything"], level: "debug" },} })

⑤ type - datefile

根據日期生成日志文件。

它提供了如下屬性:

  • filename - 文件寫入路徑
  • pattern - 日志文件切割模式,默認為yyyy-MM-dd,按日期(天)切割
  • layout - 布局,默認basic layout
  • encoding - 編碼格式,默認“utf-8”
  • mode - 文件模式,默認0o600
  • flags - 標識符,默認為‘a’
  • compress - 是否壓縮,如果為true則生成.gz后綴的日志壓縮文件,默認為false
  • keepFileExt - 滾動日志文件時保留文件擴展名,默認為false
  • fileNameSep - 滾動時的文件名分隔符,默認為‘.’
  • alwaysIncludePattern - 輸出的日志文件名是都始終包含pattern日期結尾,默認為false
  • numBackups - 在日志匹配pattern期間要保留的舊日志文件的數量,默認為1
log4js.configure({appenders: {everything: {type: "dateFile",filename: "all-the-logs.log",pattern: "yyyy-MM-dd-hh",encoding: "utf-8",compress: true,keepFileExt: true,alwaysIncludePattern: true},},categories: {default: { appenders: ["everything"], level: "debug" },} })

2.layout 布局

① type - basic

最基本的日志布局。如stdout,默認為colored布局,則會被替換成basic布局。

log4js.configure({appenders: { out: { type: "stdout", layout: { type: "basic" } } },categories: { default: { appenders: ["out"], level: "info" } } }) const logger = log4js.getLogger() logger.info("express is running at http://127.0.0.1:8080")

?輸出結果:

[2022-12-13T14:23:39.917] [INFO] default - express is running at http://127.0.0.1:8080

② type - colored

帶有彩色塊的日志布局。日志顏色根據不同等級格式如下:

  • TRACE - ‘blue’
  • DEBUG - ‘cyan’
  • INFO - ‘green’
  • WARN - ‘yellow’
  • ERROR - ‘red’
  • FATAL - ‘magenta’
log4js.configure({appenders: { out: { type: "file", filename: 'log.log', layout: { type: "colored" } } },categories: { default: { appenders: ["out"], level: "info" } } }) const logger = log4js.getLogger() logger.info("express is running at http://127.0.0.1:8080")

輸出結果:

[32m[2022-12-13T14:23:59.045] [INFO] default - [39mexpress is running at http://127.0.0.1:8080

③ type - messagePassThrough

只輸出日志數據,不輸出時間戳、級別或類別。

log4js.configure({appenders: { out: { type: "file", filename: 'log.log', layout: { type: "messagePassThrough" } } },categories: { default: { appenders: ["out"], level: "info" } } }) const logger = log4js.getLogger() logger.info("express is running at http://127.0.0.1:8080")

?輸出結果:

express is running at http://127.0.0.1:8080

④ type - dummy

僅輸出日志數據第一個值。

log4js.configure({appenders: { out: { type: "file", filename: 'log.log', layout: { type: "dummy" } } },categories: { default: { appenders: ["out"], level: "info" } } }) const logger = log4js.getLogger() const address = " http://127.0.0.1:8085" logger.info("服務器啟動啦:",address)

?輸出結果:

服務器啟動啦:

⑤ type - pattern

自定義日志輸出格式。

pattern字符串可以包含任何字符,但以%開頭的序列將替換為如下內容:

  • %r 當地時間
  • %p 日志等級level
  • %c日志類別category
  • %h hostname
  • %m 日志內容data
  • %m{l} where l is an integer, log data.slice(l)
  • %m{l,u} where l and u are integers, log data.slice(l, u)
  • %d 日期時間,也可以格式化,如%d{DATETIME}, %d{yyyy/MM/dd-hh.mm.ss}
  • %% 可以輸出%
  • %n 換行
  • %z pid
  • %f 文件全路徑
  • %f{depth} 路徑深度,如%f{1}
  • %l 行號 line number
  • %o 列位置,需要category設置enableCallStack: true
  • %s 調用堆棧,需要category設置enableCallStack: true
  • %C 類名,需要category設置enableCallStack: true
  • %M 方法或函數名,需要category設置enableCallStack: true
  • %A 方法或函數別名,需要category設置enableCallStack: true
  • %F 全限定調用名,需要category設置enableCallStack: true
  • %x{} 將token添加到日志中
  • %X{} add values from the Logger context. Tokens are keys into the context values.
  • %[開始一個彩色塊
  • %] 結束一個彩色塊
log4js.configure({appenders: {cheese: {type: 'dateFile',filename: 'log.log',encoding: 'utf-8',// 配置 layout,此處使用自定義模式 patternlayout: {type: "coloured",// type: "pattern"// 配置模式// pattern:"[date:%d] [level:%p] [category:%c] [host:%h] [pid:%z] [data:%m]"},pattern: "-yyyy-MM-dd",keepFileExt: true,alwaysIncludePattern: true}},categories: {default: { appenders: ['cheese'], level: "trace" }} })

輸出結果:

[date:2022-12-13T13:54:06.412] [level:INFO] [category:default] [host:shenqihailuo] [pid:12345] [data:express is running at http://127.0.0.1:8080]

也可以定義為json格式數據:

pattern:'{"date":"%d","level":"%p","category":"%c","host":"%h","pid":"%z","data":"%m"}'

輸出結果:

{"date":"2022-12-15T10:00:03.081","level":"INFO","category":"default","host":"shenqihailuo","pid":"12345","data":"express is running at http://127.0.0.1:8080"}

3.categories 類別

categories 類別是日志事件的組。當創建實例log4js.getLogger('定義的categories')時,會定義日志事件的類別。具有相同類別的日志事件將轉到相同的輸出源。

categories定義了輸出源以及最低展示級別。categories有default默認類別,以及自定義的類別。我們可以根據需要來配置數據源以及創建實例.若創建實例時log4js.getLogger()的參數未定義或者未找到,則默認類別為 default 。

categories: {default: { appenders: ['cheese','app'], level: "trace" },catA: { appenders: ['cheese'], level: "info" },catB: { appenders: ['app'], level: "trace" } }const catAlogger = log4js.getLogger("catA") const catBlogger = log4js.getLogger("catA")catAlogger.info("我是catA類別日志") catBlogger.trace("我是catB類別日志")

catAlogger只會輸出cheese輸出源,catBlogger只會輸出app輸出源??梢愿鶕枰x輸出源cheese和app的類型。

總結

以上是生活随笔為你收集整理的Node.js学习笔记(九)#log4js日志管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。