UNPKG

nsfw-api

Version:
74 lines (63 loc) 2.46 kB
import ServerAPI from "../ServerAPI"; const {createLogger, format, transports} = require('winston'); require('winston-daily-rotate-file'); const {combine, timestamp, label, printf} = format; import FileSystemHelper from '../helper/FileSystemHelper'; /** * MyLogger is a Wrapper for winston logger https://www.npmjs.com/package/winston * This logger simply creates just a format and handles the folder structure */ export default class MyLogger { /** * Constructor of a logger * @param folderName the folder name */ constructor(folderName) { const pathToGeneralLogFolder = "./logs/"; //get path of logs FileSystemHelper.mkdirpath(pathToGeneralLogFolder); //create it if it does not exist const pathToLogFolder = pathToGeneralLogFolder + folderName; FileSystemHelper.mkdirpath(pathToLogFolder); //create specific folder // CREATING THE LOGGER const myFormat = printf(({level, message, label, timestamp}) => { return `${timestamp} [${label}] ${level}: ${message}`; }); let transportsList = []; transportsList.push( new transports.DailyRotateFile({ //each day a new file filename: 'logs/' + folderName + '/error-%DATE%.log', datePattern: 'YYYY-MM-DD-HH', zippedArchive: false, maxSize: '20m', maxFiles: '14d', level: 'error', }) ); transportsList.push( new transports.DailyRotateFile({ //each day a new file filename: 'logs/' + folderName + '/combined-%DATE%.log', datePattern: 'YYYY-MM-DD-HH', zippedArchive: false, maxSize: '20m', maxFiles: '14d' }) ); let workerID = ServerAPI.getWorkderId(); const customLabel = "Worker: " + workerID + " - " + folderName; //the format will be defined here this.logger = createLogger({ format: combine( label({label: customLabel}), timestamp(), myFormat ), defaultMeta: {service: 'user-service'}, transports: transportsList }); this.logger.info("[" + folderName + "] Logger Created"); //first logger message :D } /** * Returns the logger instance */ getLogger() { return this.logger; } }