File: /var/dev/nowruzgan/rest/config/log.js
const flaverr = require('flaverr');
const path = require('path');
const fs = require('fs');
require('winston-daily-rotate-file');
const {createLogger, format, transports} = require('winston');
const {combine, timestamp, printf} = format;
var logDir = path.resolve(__dirname, '../log/');
fs.mkdir(logDir, () => {});
const myFormat = printf(({level, message, action, timestamp, session, error}) => {
error = error ? ' - '+error.message : '';
let user = session?.user?.id ? `${session.user.id}` : 'anonym';
let string = `${timestamp} [${action || ''}] <${user}> ${level}: ${message}${error}`;
if(sails.config.environment=='development') {
console.log(string);
if(error){
console.log('-----------');
console.log(error);
console.log('-----------');
}
}
return string;
});
var logger = createLogger({
level: process.env.LOG_LEVEL || 'info',
format: combine(timestamp(), myFormat),
transports: [
new (transports.DailyRotateFile)({
filename: 'combined-%DATE%.log',
dirname: logDir,
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '100m',
maxFiles: '180d'
}),
new (transports.DailyRotateFile)({
level: 'error',
filename: 'error-%DATE%.log',
dirname: logDir,
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '100m',
maxFiles: '180d'
}),
]
});
module.exports.log = {
level: 'info',
custom: logger,
inspect: false,
interceptError: (session, action, message, exit) => error => {
if(message == 'relay') {
message = error.relay;
error = error.error;
}
sails.log.error({session, action, message});
console.log(error);
return exit ? exit : false;
},
relay: message => error => {
throw flaverr('transaction', flaverr({error: error, relay: message}))
}
};