示例
log目录文件如下,一个config配置文件,一个主文件
以下为config.js文件内容
const path = require('path')
//日志根目录
const baseLogPath = path.resolve(__dirname, '../logs')
// 错误输出日志
// 错误日志目录、文件名、路径
const errorPath = '/error'
const errorFileName = 'error'
const errorLogPath = baseLogPath + errorPath + '/' + errorFileName
// 配置日志格式
const appenders = {
'rule-console': { 'type': 'console' },
'errorLogger': {
type: 'dateFile', // 日志类型
filename: errorLogPath, // 输出文件名
pattern: '-yyyy-MM-dd.log', // 文件后缀
alwaysIncludePattern: true, //
encoding: 'utf-8', // 编码格式
maxLogSize: 1024 * 1024 * 1, // 每个文件最大存储内容
numBackups: 2, // 备份文件的数量,主文件 + 备份 共3个文件,
path: errorPath
}
}
// 供外部调用的名称 和 对应设置定义
const categories = {
default: { appenders: ['rule-console'], level: 'all' },
errorLogger: { appenders: ['errorLogger'], level: 'error' }
}
module.exports = {
appenders,
categories,
baseLogPath,
disableClustering: true
}
以下为index.js的内容
const log4js = require('log4js')
const logConfig = require('./config')
// 调用预先定义的日志名称
const consoleLogger = log4js.getLogger()
const errorLogger = log4js.getLogger('errorLogger')
// 加载配置文件
log4js.configure(logConfig)
/**
* 普通日志
*/
const info = function (info) {
var logText = new String()
//响应日志头信息
logText += '\n' + '***************info log start ***************' + '\n'
//响应内容
logText += 'info detail: ' + '\n' + JSON.stringify(info) + '\n'
//响应日志结束信息
logText += '*************** info log end ***************' + '\n'
return logText
}
/**
* 错误日志
*/
const error = function (err, resTime) {
var logText = new String()
//错误信息开始
logText += '\n' + '*************** error log start ***************' + '\n'
//添加请求日志
// 错误名称
logText += 'err name: ' + err.name + '\n'
// 错误信息
logText += 'err message: ' + err.message + '\n'
// logText += "err message: " + err + "\n";
//错误详情
logText += 'err stack: ' + err.stack + '\n'
//错误信息结束
logText += '*************** error log end ***************' + '\n'
return logText
}
module.exports = {
//封装普通日志
logInfo: function (info) {
if (info) {
consoleLogger.info(info(info))
}
},
//封装错误日志
logError: function (error, resTime) {
// console.log(error)
// console.log(resTime)
if (error) {
errorLogger.error(error(error, resTime))
}
}
}
appenders属性
type
type: console输出在控制台,往往用于调试type: file日志输出为普通文件type: dateFile按时间区分的日志文件
filename
D:\koa2/config/logs/error/error
路径 加 文件名称,代表输出文件名
pattern
pattern: '-yyyy-MM-dd.log'
yyyy(年)、yy(年后两位)、MM(月份)、dd(天)、hh(小时)、mm(分)、ss(秒)
精确到天,就是每天一个文件;精确到小时,就是每小时一个文件;精确到分,就是每分钟一个文件。
默认是精确到天
alwaysIncludePattern
alwaysIncludePattern: true
默认开启
开启的情况下,filename 带有 pattern的后缀,也就是将两者合并到一起:handle.-2022-08-05.log
不开启则是handle.log,无时间后缀,也不会分文件
encoding
encoding: utf-8
编码格式
maxLogSize
maxLogSize: 1024 * 1024 * 1
文件的最大存储,单位byte,上面表示的是1M
numBackups
numBackups: 3
备份文件的数量,达到最大值,最新的会覆盖旧数据
daysToKeep
daysToKeep: 10
时间文件 保存多少天,以前的log将被删除