当接口在asyncData中被请求时,若接口报错,无法快速定位到具体事哪个接口报错了,所以需要建立了一个本地错误日志
1.创建一个 logs.js 文件,写入node脚本
// logs.js
const fs = require('fs');
const path = require('path');
let nowDate = new Date();
let today = String(nowDate.getFullYear()) + String((nowDate.getMonth() + 1)) + String(nowDate.getDate());
const errorLogPath = path.resolve(process.cwd(), './logs', `errors_${today}.log`);
const errorLogPathDir = path.resolve(process.cwd(), './logs');
module.exports = function(message) {
try {
// 判断日志目录是否存在
fs.access(errorLogPathDir, fs.constants.F_OK, function(err) {
if (err) {
// 目录不存在
fs.mkdirSync(errorLogPathDir, function(err) {
if (err) {
console.log('创建失败日志目录!');
return false;
}
console.log('创建成功日志目录!');
});
}
// 目录存在
fs.appendFileSync(errorLogPath, message + '\r\n', function(err) {
if (err) {
console.log(err);
} else {
console.log('写入错误成功!');
}
});
});
} catch(err) {
console.log(err);
}
}
2. 在axios二次封装文件中使用logs.js 脚本文件
// axios.js
/**
* 封装get方法
* @param url
* @param data
* @returns {Promise}
*/
export function fetch(url, params = {}) {
return new Promise((resolve, reject) => {
axios
.get(url, { params: params })
.then((response) => {
// 捕捉错误,生成错误日志,必须运行在服务端node环境
if (process.server && !response.data.IsOK) {
let logs = require('./log.js');
logs(`get IsOK=false status=${response.status} ` + url + ' ' + new Date());
logs = null;
}
resolve(response.data)
})
.catch((err) => {
// 捕捉错误,生成错误日志,必须运行在服务端node环境
if (process.server) {
let logs = require('./log.js');
logs('get ' + url + ' ' + new Date());
logs = null;
}
reject(err)
})
})
}
一定要在服务端运行此logs脚本
3. 最后就直接运行项目就可以了,如果有报错就会自动在项目根目录下创建一个logs文件夹,然后生成当天的错误日志
版权声明:本文为qq_40225369原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。