Better logging with winston
This commit is contained in:
86
src/logger.js
Normal file
86
src/logger.js
Normal file
@@ -0,0 +1,86 @@
|
||||
import winston from 'winston';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import DailyRotateFile from 'winston-daily-rotate-file';
|
||||
|
||||
let LOGS_FOLDER = './logs/';
|
||||
|
||||
if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {
|
||||
LOGS_FOLDER = './test_logs/'
|
||||
}
|
||||
|
||||
let currentLogsFolder = LOGS_FOLDER;
|
||||
var currentTransports;
|
||||
|
||||
const logger = new winston.Logger();
|
||||
|
||||
export function configureLogger({logsFolder}) {
|
||||
logsFolder = logsFolder || currentLogsFolder;
|
||||
|
||||
if (!path.isAbsolute(logsFolder)) {
|
||||
logsFolder = path.resolve(process.cwd(), logsFolder);
|
||||
}
|
||||
if (!fs.existsSync(logsFolder)) {
|
||||
fs.mkdirSync(logsFolder);
|
||||
}
|
||||
currentLogsFolder = logsFolder;
|
||||
|
||||
currentTransports = [
|
||||
new (winston.transports.Console)({
|
||||
colorize: true,
|
||||
level: process.env.VERBOSE ? 'verbose': 'info'
|
||||
}),
|
||||
new (DailyRotateFile)({
|
||||
filename: 'parse-server.info',
|
||||
dirname: currentLogsFolder,
|
||||
name: 'parse-server',
|
||||
level: process.env.VERBOSE ? 'verbose': 'info'
|
||||
}),
|
||||
new (DailyRotateFile)({
|
||||
filename: 'parse-server.err',
|
||||
dirname: currentLogsFolder,
|
||||
name: 'parse-server-error',
|
||||
level: 'error'
|
||||
})
|
||||
]
|
||||
|
||||
logger.configure({
|
||||
transports: currentTransports
|
||||
})
|
||||
}
|
||||
|
||||
configureLogger({logsFolder: LOGS_FOLDER});
|
||||
|
||||
export function addGroup(groupName) {
|
||||
let level = process.env.VERBOSE ? 'verbose': 'info';
|
||||
winston.loggers.add(groupName, {
|
||||
transports: [
|
||||
new (winston.transports.Console)({
|
||||
colorize: true,
|
||||
level: level
|
||||
}),
|
||||
new (DailyRotateFile)({
|
||||
filename: groupName,
|
||||
dirname: currentLogsFolder,
|
||||
name: groupName,
|
||||
level: level
|
||||
}),
|
||||
new (DailyRotateFile)({
|
||||
filename: 'parse-server.info',
|
||||
name: 'parse-server',
|
||||
dirname: currentLogsFolder,
|
||||
level: level
|
||||
}),
|
||||
new (DailyRotateFile)({
|
||||
filename: 'parse-server.err',
|
||||
dirname: currentLogsFolder,
|
||||
name: 'parse-server-error',
|
||||
level: 'error'
|
||||
})
|
||||
]
|
||||
});
|
||||
return winston.loggers.get(groupName);
|
||||
}
|
||||
|
||||
export { logger };
|
||||
export default winston;
|
||||
Reference in New Issue
Block a user