- 日志记录功能说明:
-
-
日志记录时机:
- 在请求被处理之后记录(因为先调用
next()) - 这样可以确保不阻塞请求处理流程
- 在请求被处理之后记录(因为先调用
-
记录内容:
- 请求方法 (
req.method):GET/POST/PUT/DELETE等 - 请求路径 (
req.path):访问的URL路径
- 请求方法 (
-
日志级别:
- 使用
debug级别记录,适合记录调试信息 - 可以根据需要改为
info或其他级别
- 使用
-
const log4js = require("log4js");
const path = require("path");
function getCommonAppender(pathSeg) {
return {
//定义一个sql日志出口
type: "dateFile",
filename: path.resolve(__dirname, "logs", pathSeg, "logging.log"),
maxLogSize: 1024 * 1024, //配置文件的最大字节数
keepFileExt: true,
daysToKeep: 3,
layout: {
type: "pattern",
pattern: "%c [%d{yyyy-MM-dd hh:mm:ss}] [%p]: %m%n",
},
};
}
log4js.configure({
appenders: {
sql: getCommonAppender("sql"),
default: {
type: "stdout",
},
api: getCommonAppender("api"),
},
categories: {
sql: {
appenders: ["sql"], //该分类使用出口sql的配置写入日志
level: "all",
},
default: {
appenders: ["default"],
level: "all",
},
api: {
appenders: ["api"],
level: "all",
},
},
});
process.on("exit", () => {
log4js.shutdown();
});
exports.sqlLogger = log4js.getLogger("sql");
exports.logger = log4js.getLogger();
exports.apiLogger = log4js.getLogger("api");
中间件 apiLoggerMid.js
const { apiLogger } = require("../logger.js");
module.exports = (req, res, next) => {
next();
apiLogger.debug(`${req.method} ${req.path} ${req.ip}`);
};
或:
const { apiLogger } = require("../logger.js");
const log4js = require("log4js");
module.exports = log4js.connectLogger(apiLogger,{
level:"auto",
});