You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
4.0 KiB
91 lines
4.0 KiB
// | ------------------------------------------------------------
|
|
// | @版本: 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
|
|
|