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.
116 lines
4.2 KiB
116 lines
4.2 KiB
let log4js = require('log4js');
|
|
let logConfig = require('../config/log');
|
|
|
|
// 加载配置文件
|
|
log4js.configure(logConfig);
|
|
|
|
// 调用预先预定的日志名称
|
|
let resLogger = log4js.getLogger("resLogger");//请求数据响应
|
|
let errorLogger = log4js.getLogger("errorLogger"); //错误日志
|
|
let handleLogger = log4js.getLogger("handleLogger"); //操作数据
|
|
let consoleLogger = log4js.getLogger();
|
|
// 格式化日志文本 加上日志头尾和换行方便查看 ==> 普通日志、请求日志、响应日志、操作日志、错误日志
|
|
let formatText = {
|
|
info: function(info) {
|
|
let logText = new String();
|
|
//响应日志头信息
|
|
logText += "\n" + "***************info log start ***************" + "\n";
|
|
//响应内容
|
|
logText += "info detail: " + "\n" + JSON.stringify(info) + "\n";
|
|
//响应日志结束信息
|
|
logText += "*************** info log end ***************" + "\n";
|
|
return logText;
|
|
},
|
|
request: function(req,postObj) {
|
|
let logText = new String();
|
|
let method = req.method;
|
|
//访问方法
|
|
logText += "请求方式: " + method + "\n";
|
|
//请求原始地址
|
|
logText += "请求接口路径: " + req.originalUrl + "\n";
|
|
//客户端ip
|
|
logText += "访问的ip " + req.ip + "\n";
|
|
//请求的设备
|
|
logText += "访问的设备: " + req.headers['user-agent'] + "\n";
|
|
//请求参数
|
|
if (method === 'GET') {
|
|
logText += "地址栏传的值: " + JSON.stringify(req.query) + "\n";
|
|
|
|
}else if(method === 'POST') {
|
|
logText += "POST页面传的值: " + "\n" + JSON.stringify(postObj) + "\n";
|
|
|
|
}else{
|
|
logText += "页面传的值: " + "\n" + JSON.stringify(req.body) + "\n";
|
|
}
|
|
return logText;
|
|
},
|
|
response: function(ctx,postObj) {
|
|
let logText = new String();
|
|
//响应日志开始
|
|
logText += "\n" + "*************** response log start ***************" + "\n";
|
|
//添加请求日志
|
|
logText += formatText.request(ctx.request,postObj);
|
|
//响应状态码
|
|
logText += "响应状态码: " + ctx.status + "\n";
|
|
//响应内容
|
|
logText += "响应内容: " + "\n" + JSON.stringify(ctx.body) + "\n";
|
|
//响应日志结束
|
|
logText += "*************** response log end ***************" + "\n";
|
|
return logText;
|
|
},
|
|
handle: function(info,name) {
|
|
let logText = new String();
|
|
//响应日志开始
|
|
logText += "\n" + "***************info log start ***************" + "\n";
|
|
//响应内容
|
|
logText += "数据库语句: " + "\n" + JSON.stringify(info).replace(/\\n/g, "\n") + "\n";
|
|
//当前目录
|
|
logText += "当前目录: " + "\n" + JSON.stringify(name).replace(/\\n/g, "\n") + "\n";
|
|
//响应日志结束
|
|
logText += "*************** info log end ***************" + "\n";
|
|
return logText;
|
|
},
|
|
error: function(ctx, err) {
|
|
let logText = new String();
|
|
//错误信息开始
|
|
logText += "\n" + "*************** error log start ***************" + "\n";
|
|
//添加请求日志
|
|
logText += formatText.request(ctx.request);
|
|
//错误名称
|
|
logText += "err name: " + err.name + "\n";
|
|
//错误信息
|
|
logText += "err message: " + err.message + "\n";
|
|
//错误详情
|
|
logText += "err stack: " + err.stack + "\n";
|
|
//错误信息结束
|
|
logText += "*************** error log end ***************" + "\n";
|
|
return logText;
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
//封装普通日志
|
|
logInfo: function(info) {
|
|
if (info) {
|
|
consoleLogger.info(formatText.info(info));
|
|
}
|
|
},
|
|
//封装响应日志
|
|
logResponse: function(ctx,postObj) {
|
|
if (ctx) {
|
|
resLogger.info(formatText.response(ctx,postObj));
|
|
}
|
|
},
|
|
//封装操作日志
|
|
logHandle: function(res,name) {
|
|
if (res) {
|
|
handleLogger.info(formatText.handle(res,name));
|
|
}
|
|
},
|
|
//封装错误日志
|
|
logError: function(ctx, error) {
|
|
if (ctx && error) {
|
|
errorLogger.error(formatText.error(ctx, error));
|
|
}
|
|
}
|
|
};
|