first commit
This commit is contained in:
96
middlewares/logging.js
Normal file
96
middlewares/logging.js
Normal file
@ -0,0 +1,96 @@
|
||||
|
||||
const colllogging = require('../models/colllogging');
|
||||
|
||||
// const getLoggerForStatusCode = (statusCode) => {
|
||||
// // console.log(statusCode);
|
||||
// if (statusCode >= 500) {
|
||||
// return console.error.bind(console)
|
||||
// }
|
||||
// if (statusCode >= 400) {
|
||||
// return console.warn.bind(console)
|
||||
// }
|
||||
|
||||
// return console.log.bind(console)
|
||||
// }
|
||||
|
||||
module.exports = (req, res, next) => {
|
||||
// console.info(`${req.method} ${req.originalUrl}`)
|
||||
const cleanup = () => {
|
||||
res.removeListener('finish', logFn)
|
||||
res.removeListener('close', abortFn)
|
||||
res.removeListener('error', errorFn)
|
||||
}
|
||||
|
||||
const logFn = () => {
|
||||
try {
|
||||
cleanup()
|
||||
// console.log(req['headers']['content-type'])
|
||||
let nz_date_string = new Date().toLocaleString("en-US", { timeZone: "Asia/Jakarta" });
|
||||
// console.log(nz_date_string);
|
||||
// const secretkey = req.body.secretkey
|
||||
const iprequest = req.headers['x-forwarded-for']
|
||||
const timestamp = nz_date_string//new Date().toISOString()
|
||||
const useragent = req.headers['user-agent']
|
||||
const contenttype = req.headers['content-type']==undefined ? "none" : req.headers['content-type']
|
||||
const originalurl = req.originalUrl
|
||||
const requestbody = JSON.stringify(req.body)
|
||||
const requestheader = JSON.stringify(req.headers)
|
||||
const statuscode = res.statusCode
|
||||
const response = res.get('responseData')
|
||||
|
||||
var savelogging = new colllogging(
|
||||
{
|
||||
// secretkey : secretkey,
|
||||
iprequest : iprequest,
|
||||
timestamp : timestamp,
|
||||
useragent : useragent,
|
||||
contenttype : contenttype,
|
||||
originalurl : originalurl,
|
||||
requestbody : requestbody,
|
||||
requestheader : requestheader,
|
||||
statuscode : statuscode,
|
||||
response : response
|
||||
}
|
||||
);
|
||||
savelogging.save(function(err,data){
|
||||
|
||||
if(err)
|
||||
{
|
||||
const error = new Error("Logging failed");
|
||||
error.statusCode = 401;
|
||||
error.message = err.toString();
|
||||
throw error;
|
||||
}
|
||||
else{
|
||||
//console.log(data);
|
||||
}
|
||||
});
|
||||
} catch (err) {
|
||||
const error = new Error("Logging failed");
|
||||
error.statusCode = 401;
|
||||
error.message = err.toString();
|
||||
throw error;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
const abortFn = () => {
|
||||
cleanup()
|
||||
console.warn('Request aborted by the client')
|
||||
}
|
||||
|
||||
const errorFn = err => {
|
||||
cleanup()
|
||||
console.error(`Request pipeline error: ${err}`)
|
||||
}
|
||||
|
||||
// successful pipeline (regardless of its response)
|
||||
res.on('finish', logFn) // successful pipeline (regardless of its response)
|
||||
res.on('close', abortFn) // aborted pipeline
|
||||
res.on('error', errorFn) // pipeline internal error
|
||||
next()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user