node 服务
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

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));
}
}
};