WSyslog

WSyslog

new WSyslog(optopt) → {Object}

Description:
  • 輸出log

Source:
Example
import fs from 'fs'
import _ from 'lodash-es'
import w from 'wsemi'
import WSyslog from './src/WSyslog.mjs'

w.fsCleanFolder('./_logs')

let log = WSyslog()
log.info({ event: 'runner', msg: 'start' })
log.warn({ event: 'monitor-memory', msg: 'usage-high', ratio: 85.4 })
log.error({ event: 'crash', msg: 'db connection', code: 500 })

await log.clear() //顯式關閉, flush殘餘log並終止transport worker, 之後不可再呼叫log方法

let vpfs = w.fsTreeFolder('./_logs')
// console.log('vpfs', vpfs)

let fp = _.get(vpfs, `0.path`, '')

let jj = fs.readFileSync(fp, 'utf8')
console.log(jj)
// {"level":30,"time":1751780174415,"pid":24144,"hostname":"DESKTOP-6R7USAO","event":"runner","msg":"start"}
// {"level":40,"time":1751780174415,"pid":24144,"hostname":"DESKTOP-6R7USAO","event":"monitor-memory","msg":"usage-high"}
// {"level":50,"time":1751780174415,"pid":24144,"hostname":"DESKTOP-6R7USAO","event":"crash","msg":"db connection","code":500}
Parameters:
Name Type Attributes Default Description
opt Object <optional>
{}

輸入設定物件,預設{}

Properties
Name Type Attributes Default Description
fdLog String <optional>
'./_logs'

輸入儲存log資料夾字串,預設'./_logs'

interval String <optional>
'day'

輸入儲存log時分檔模式字串,可選'day'、'hr',分別代表每日或每時分檔,預設'day'

timeZone String <optional>
null

輸入時區字串(IANA格式如'Asia/Taipei'、'UTC'),用於決定切檔邊界與檔名,預設null代表使用系統時區

numKeep Number <optional>

輸入保留log檔案數量整數,超出最舊檔將被自動刪除,預設於day模式為365、hr模式為365*24(約等同保留一年)

Returns:

回傳log物件,提供fatal、error、warn、info、debug、trace紀錄函數,cleanLogs手動清理函數,及clear顯式關閉函數(回傳Promise,將殘餘log全部寫出後終止transport worker並停止清理計時器,附逾時保險預設60000ms可由opt.timeLimit調整,冪等;clear之後不可再呼叫任何log方法)

Type
Object