node服务器实战-日志持久化
日志对于 Web 后台应用来说是必要的,Koa 原生并不支持支持日志模块,所幸 GitHub 已经有很多优秀的 Node.js 日志框架,这节实战将使用 log4js-node 来处理 Koa 的日志,当然也有像 koa-log4 这样的 Koa 中间件对 log4js-node 进行了封装,本节实战也会实现一个中间件来处理日志。
log4js-node的基本使用
log4js-node 是经过对 log4js 框架进行转换来支持 node 的,在开始实战之前,先耐心来看下 log4js 的基本使用方式:
const log4js = require("log4js"); // 引入 log4js
const logger = log4js.getLogger(); // 获得 default category
logger.level = "debug"; // 设置 level
logger.debug("调试信息"); // 输出日志
// 输出: [2020-10-31T16:02:24.527] [DEBUG] default - 调试信息
默认的情况下,default
类别(category )的日志 level 是设置为 OFF 的,上面的代码将其设置为 “debug”,这使得调试信息可以输出到 stdout。
再来看一个示例:
const log4js = require("log4js");
// 对日志进行配置
log4js.configure({
// 指定输出文件类型和文件名
appenders: {
cheese: {
type: "file", filename: "cheese.log" } },
// appenders 指定了日志追加到 cheese
// level 设置为 error
categories: {
default: {
appenders: ["cheese"], level: "error" } }
});
const logger = log4js.getLogger(); // 获取到 default 分类
logger.trace("Entering cheese testing");
logger.debug("Got cheese.");
logger.info("Cheese is Comté.");
logger.warn("Cheese is quite smelly.");
logger.error("Cheese is too ripe!"); // 从这里开始写入日志文件
logger.fatal("Cheese was breeding ground for listeria.");
从上面的设置看到 appenders
指定了日志追加到cheese
(也就是cheese.log)里面去,level 设置为 “error”,也就是说只有日志等级大于 “error” 的才会添加到 log 文件。
当执行了上面的代码,可以看到项目目录里面多了一个 cheese.log 文件,内如如下:
[2020-10-31T16:26:17.188] [ERROR] default - Cheese is too ripe!
[2020-10-31T16:26:17.194] [FATAL] default - Cheese was breeding ground for listeria.
有关 log4js-node 的更多使用示例可以参考 example.js 以及 examples 目录下的文件。
下面来进入本节的实战…
安装 log4js
前面对 log4js-node 进行了简单介绍,现在来在应用里面使用,首先安装 log4js:
$ npm install log4js --save
设置 log4js
我们修改 config/config.js
,来对 log4js 编写一些配置:
// config/config.js
const CONFIG = {
"API_PREFIX":