129 lines
4.9 KiB
JavaScript
129 lines
4.9 KiB
JavaScript
'use strict';
|
|
|
|
let defaultOptions = require('./config');
|
|
const moment = require('moment-timezone');
|
|
const momentJS = require('moment');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
let commonServices = {
|
|
|
|
SetOptions: function(options) {
|
|
defaultOptions = options ? options : defaultOptions;
|
|
},
|
|
|
|
/**
|
|
* Validate options enter by user and return back updated options object
|
|
* @param options Options
|
|
*/
|
|
ValidateOptions: function(options) {
|
|
let warningPrefix = 'Node File Logger Warning: ';
|
|
|
|
// Validate folder name
|
|
try {
|
|
if (options.folderPath && !fs.existsSync(options.folderPath)) {
|
|
fs.mkdirSync(options.folderPath);
|
|
defaultOptions.folderPath = options.folderPath;
|
|
}
|
|
} catch(ex) {
|
|
console.log(warningPrefix + 'Error occured while creating log folder. Set to default: ' + defaultOptions.folderPath);
|
|
}
|
|
|
|
// Validate time zone
|
|
if(options.timeZone) {
|
|
if(moment.tz.zone(options.timeZone)) {
|
|
defaultOptions.timeZone = options.timeZone;
|
|
} else {
|
|
console.log(warningPrefix + 'Invalid timezone. Set to default: ' + defaultOptions.timeZone);
|
|
}
|
|
}
|
|
|
|
// Validate dateBasedFileName
|
|
if(options.dateBasedFileNaming !== undefined)
|
|
defaultOptions.dateBasedFileNaming = options.dateBasedFileNaming;
|
|
|
|
// Validate file name
|
|
if(defaultOptions.dateBasedFileNaming) {
|
|
if(options.fileName && options.fileName.trim() != '') {
|
|
console.log(warningPrefix + 'dateBasedFileName is set to true, so fileName parameter will be ignored');
|
|
}
|
|
if(options.fileNamePrefix) {
|
|
if(options.fileNamePrefix.trim() == '') {
|
|
console.log(warningPrefix + 'Filename prefix is not set. Will be set to default: ' + defaultOptions.fileNamePrefix);
|
|
} else {
|
|
defaultOptions.fileNamePrefix = options.fileNamePrefix;
|
|
}
|
|
}
|
|
} else {
|
|
if(!options.fileName || options.fileName.trim() == '') {
|
|
console.log(warningPrefix + 'Filename is not set. Will be set to default: ' + defaultOptions.fileName);
|
|
} else {
|
|
defaultOptions.fileName = options.fileName;
|
|
}
|
|
|
|
if(options.fileNamePrefix && options.fileNamePrefix.trim() != '') {
|
|
console.log(warningPrefix + 'dateBasedFileName is set to false, so fileNamePrefix parameter will be ignored');
|
|
}
|
|
|
|
if(options.fileNameSuffix && options.fileNameSuffix.trim() != '') {
|
|
console.log(warningPrefix + 'dateBasedFileName is set to false, so fileNameSuffix parameter will be ignored');
|
|
}
|
|
}
|
|
|
|
// Validate file name extension
|
|
if(options.fileNameExtension) defaultOptions.fileNameExtension = options.fileNameExtension.trim();
|
|
|
|
// Validate dateFormat and timeFormat
|
|
if(options.dateFormat) defaultOptions.dateFormat = options.dateFormat;
|
|
if(options.timeFormat) defaultOptions.timeFormat = options.timeFormat;
|
|
|
|
// Validate log levels
|
|
if(options.logLevel) {
|
|
if(options.logLevel.toLowerCase() !== 'debug' &&
|
|
options.logLevel.toLowerCase() !== 'prod' &&
|
|
options.logLevel.toLowerCase() !== 'prod-trace') {
|
|
console.log(warningPrefix + 'Invalid log level. Will be set to default: ' + defaultOptions.logLevel);
|
|
} else {
|
|
defaultOptions.logLevel = options.logLevel;
|
|
}
|
|
}
|
|
|
|
// Validate onlyFileLogging
|
|
if(options.onlyFileLogging !== undefined)
|
|
defaultOptions.onlyFileLogging = options.onlyFileLogging;
|
|
|
|
return defaultOptions;
|
|
},
|
|
|
|
/**
|
|
* Get log file name with current date
|
|
*/
|
|
GetCurrentDateFileName: function() {
|
|
let folderPath = defaultOptions.folderPath;
|
|
|
|
let fileName = defaultOptions.fileNamePrefix
|
|
+ moment.tz(defaultOptions.timeZone).format(defaultOptions.dateFormat)
|
|
+ defaultOptions.fileNameSuffix
|
|
+ defaultOptions.fileNameExtension;
|
|
|
|
let fileLocation = path.join(folderPath, fileName);
|
|
|
|
if (!fs.existsSync(folderPath)) {
|
|
fs.mkdirSync(folderPath);
|
|
}
|
|
|
|
return fileLocation;
|
|
},
|
|
|
|
/**
|
|
* Get log file name when date based naming is not enabled
|
|
*/
|
|
GetLogFileName: function() {
|
|
let filePath = path.join(defaultOptions.folderPath,
|
|
defaultOptions.fileName + defaultOptions.fileNameExtension);
|
|
|
|
return filePath;
|
|
}
|
|
}
|
|
|
|
module.exports = commonServices; |