// | ------------------------------------------------------------ // | @版本: version 0.1 // | @创建人: 【Nie-x7129】 // | @E-mail: x71291@outlook.com // | @所在项目: fastify-template // | @文件描述: pino.js - // | @创建时间: 2023-12-16 18:25 // | @更新时间: 2023-12-16 18:25 // | @修改记录: // | -*-*-*- (时间--修改人--修改说明) -*-*-*- // | = // | ------------------------------------------------------------ import Pino from 'pino' import pretty from 'pino-pretty' import fs from 'fs' import rfs from 'rotating-file-stream' // 目录用于存放日志文件 const logDirectory = 'logs'; fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory); const debugStream = rfs.createStream('debug.log', { interval: '1d', // 滚动时间 60s,1m,1h,1d,1w path: logDirectory + '/debug', size: '10M', // 用于指定单个日志文件的最大大小,如果该值超过限制,将自动创建一个新文件。如果未指定此项,则文件不会被分割。 B K M G rotate: 7, // 保留日志文件的最大数量 // compress: 'gzip', }); const warnStream = rfs.createStream('warn.log', { interval: '1d', // 滚动时间 60s,1m,1h,1d,1w path: logDirectory + '/warn', size: '10M', // 用于指定单个日志文件的最大大小,如果该值超过限制,将自动创建一个新文件。如果未指定此项,则文件不会被分割。 B K M G rotate: 7, // 保留日志文件的最大数量 // compress: 'gzip', }); const streams = [ // {stream: fs.createWriteStream('logs/info.stream.out')}, {level: 'trace', stream: process.stdout }, {level: 'debug', stream: debugStream}, {level: 'warn', stream: warnStream} ] const logger = new Pino({ // name: 'pino', // 记录器的名称。当设置时,会向记录的每个JSON行添加一个 name 字段。 | Default: undefined | name (String) level: 'trace', // 最低日志记录等级 默认值Info | Default: 'info' | level (String) // customLevels: { // foo: 35 // }, // 自定义日志记录等级 | Default: undefined | customLevels (Object) useOnlyCustomLevels: false, // 是否只使用自定义日志等级 | Default: false | useOnlyCustomLevels (Boolean) depthLimit: 5, // 嵌套对象的深度 | Default: 5 | depthLimit (Number) edgeLimit: 100, // * 看不懂 在使用循环引用记录特定对象/数组时限制属性/元素字符串化的选项。 | Default: 100 | edgeLimit (Number) // msgPrefix: 'ACE', // 消息前缀 | Default: undefined | msgPrefix (String) base: { // A: '大王' },// 基础消息 formatters: { level: (label) => { return { level: label.toUpperCase().padEnd(5, ' ') } } }, enabled: true, // 启用日志 | Default: true | enabled (Boolean) crlf: false,// 设置为 true 以使用 \r\n 而不是 \n 记录换行分隔的JSON。 | Default: false | crlf (Boolean) timestamp: () => `,"time":"${new Date(Date.now()).toISOString()}"`, // 启用或禁用在日志消息中包含时间戳。如果提供了一个函数,它必须同步返回时间的部分JSON字符串表示,例如 ,"time":1493426328206 (这是默认值)。 | Default: true | timestamp (Boolean | Function) messageKey: 'MSG', // JSON对象中“message”的字符串键。 | Default: 'msg' | messageKey (String) errorKey: 'ERROR', // JSON对象中“error”的字符串键。 | Default: 'err' | errorKey (String) nestedKey: null, // 冲突字段的Key。 | Default: null | nestedKey (String) }, Pino.multistream(streams, { // levels: { // silent: Infinity, // fatal: 60, // error: 50, // warn: 50, // info: 30, // debug: 20, // trace: 10 // }, // 将自定义日志级别定义作为对象传递给实例。 // dedupe: true, // 设置为 true ,只向级别更高的流发送日志。默认值: false })) // // logger.info('AAAA') // logger.trace('C') // logger.debug('B') export default logger