HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
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}))
  }
};