安装依赖:yarn add log4js
log4js 配置信息
编写log4js配置文件 log4js.js
:
export default {
appenders: {
'STDOUT': {
type: 'stdout'
},
'FILE_ALL': {
type: 'file',
filename: 'all.log',
maxLogSize: 10485760,
backups: 10
}
},
categories: {
default: {
appenders: ['STDOUT', 'FILE_ALL'],
level: 'debug'
}
}
};
这里配置了两种日志输出
STDOUT
:输出到控制台中FILE_ALL
:输出到all.log
文件中,还配置了文件最大值为 10M ,当超过最大值时,就会把当前的all.log
日志文件改名,然后新建一个all.log
文件记录日志,之前的日志最多保留 10 个。
这两个日志输出都是 debug
级别的,就是会输出 debug, info, warn, error
这几个级别的日志(我一般只用这4个级别,还有 trace, fatal, mark
等级别)。
log4js 工具
新建日志工具类 Log4jsUtil.js
:
import log4js from 'log4js';
import log4jsConfig from '@main/config/log4js';
log4js.configure(log4jsConfig);
// 这里获取的是 categories 下的 default 日志记录器
const defaultLogger = log4js.getLogger();
export const debug = (message) => {
defaultLogger.debug(message);
};
export const info = (message) => {
defaultLogger.info(message);
};
export const warn = (message) => {
defaultLogger.warn(message);
};
export const error = (message) => {
defaultLogger.error(message);
};
日志使用
就可以在其他地方使用 log4js
了:
import { debug, info, warn, error } from '@main/util/Log4jsUtil';
debug(`这是debug信息`);
info(`这是info信息`);
warn(`这是warn信息`);
error(`这是error信息`);
修改 Sequelize 的 SQL 日志输出
修改 数据库配置:
import { info } from '@main/util/Log4jsUtil';
export default {
// 其他配置...
db: {
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
host: process.env.DB_HOST,
database: process.env.DB_DATABASE,
dialect: process.env.DB_DIALECT,
define: {
// 数据库字段下划线命名,匹配模型驼峰式命名
underscored: true,
// 禁用修改表名
freezeTableName: true
},
timezone: '+08:00',
// 返回的时间格式配置
dialectOptions: {
dateStrings: true,
typeCast: true
},
logging: (sql) => info(sql)
}
};
多种输出日志配置
一般我们会使用一个日志文件存储所有日志,就像上面的 all.log
。
但是我们在线上环境一般会比较关注错误日志,就是 error
级别的,用于排错,但是系统的debug和info输出正常都会输出很多信息,如果直接查看 all.log
日志可能会看的眼花。这时我们就需要一个 error.log
来专门记录 error
级别的日志信息。
export default {
appenders: {
'STDOUT': {
type: 'stdout'
},
'FILE_ALL': {
type: 'datefile',
filename: 'all.log',
daysToKeep: 30,
keepFileExt: true
},
'FILE_ERROR': {
type: 'datefile',
filename: 'error.log',
daysToKeep: 30,
keepFileExt: true
}
},
categories: {
default: {
appenders: ['STDOUT', 'FILE_ALL'],
level: 'debug'
},
error: {
appenders: ['FILE_ERROR'],
level: 'error'
}
}
};
这里 appenders
添加了 FILE_ERROR
配置,categories
中也新增了 error 配置。
这里使用了 datefile
,log4js 会按照日期分日志,一天一个文件,每过一天都会把前一天的 all.log
重命名为 all.2020-05-17.log
,最多保留 daysToKeep
天的日志(如果为 0 不限制)
修改工具类:
import log4js from 'log4js';
import log4jsConfig from '@main/config/log4js';
log4js.configure(log4jsConfig);
const defaultLogger = log4js.getLogger();
const errorLogger = log4js.getLogger('error');
export const debug = (message) => {
defaultLogger.debug(message);
};
export const info = (message) => {
defaultLogger.info(message);
};
export const warn = (message) => {
defaultLogger.warn(message);
};
export const error = (message) => {
defaultLogger.error(message);
errorLogger.error(message);
};
这里添加了 error
参数: const errorLogger = log4js.getLogger('error');
然后我们在 error
方法中也添加了 errorLogger.error(message);
来输出单独错误日志文件。因为有了日志工具类,所以在使用的地方我们完全无需更改,如果你还想要其他输出,比如 sql
输出为单独一个文件,只要更改 配置文件,和 工具类即可。
相关文章: