UNPKG

w-syslog

Version:
167 lines (120 loc) 4.33 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>WSyslog.mjs - Documentation</title> <script src="scripts/prettify/prettify.js"></script> <script src="scripts/prettify/lang-css.js"></script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc.css"> <script src="scripts/nav.js" defer></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <input type="checkbox" id="nav-trigger" class="nav-trigger" /> <label for="nav-trigger" class="navicon-button x"> <div class="navicon"></div> </label> <label for="nav-trigger" class="overlay"></label> <nav > <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WSyslog.html">WSyslog</a></li></ul> </nav> <div id="main"> <h1 class="page-title">WSyslog.mjs</h1> <section> <article> <pre class="prettyprint source linenums"><code>import path from 'path' import { fileURLToPath } from 'url' import get from 'lodash-es/get.js' import isestr from 'wsemi/src/isestr.mjs' import pino from 'pino' //__dirname let __filename = fileURLToPath(import.meta.url) let __dirname = path.dirname(__filename) /** * 輸出log * * @class * @param {Object} [opt={}] 輸入設定物件,預設{} * @param {String} [opt.fdLog='./_logs'] 輸入儲存log資料夾字串,預設'./_logs' * @param {String} [opt.interval='day'] 輸入儲存log時分檔模式字串,可選'day''hr',分別代表每日或每時分檔,預設'day' * @returns {Object} 回傳log物件,提供info、warn、error紀錄函數 * @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 w.delay(2000) //等待2秒讓pino能flush數據 * * 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} * */ function WSyslog(opt = {}) { //fdLog let fdLog = get(opt, 'fdLog') if (!isestr(fdLog)) { fdLog = './_logs' } //interval let interval = get(opt, 'interval') if (interval !== 'day' &amp;&amp; interval !== 'hr') { interval = 'day' } // 建立 logger,使用自訂 transport let transport = pino.transport({ targets: [ { // fatal: 60 // error: 50 // warn: 40 // info: 30 // debug: 20 // trace: 10 level: 'info', //僅紀錄info(30)以上 target: path.resolve(__dirname, './formatter.mjs'), options: { interval, fdLog, }, }, ] }) //log let log = pino(transport) // console.log('log', log) return log } export default WSyslog </code></pre> </article> </section> </div> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a> on Mon Aug 25 2025 14:33:18 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme. </footer> <script>prettyPrint();</script> <script src="scripts/polyfill.js"></script> <script src="scripts/linenumber.js"></script> </body> </html>