Skip to content

Instantly share code, notes, and snippets.

@xettri
Created August 30, 2019 06:30
Show Gist options
  • Save xettri/3d62152c33b102c5510c2a3c58078008 to your computer and use it in GitHub Desktop.
Save xettri/3d62152c33b102c5510c2a3c58078008 to your computer and use it in GitHub Desktop.
//----------------------------------Winston config file--------------------------------//
/*https://www.npmjs.com/package/winston*/
const winston = require('winston');
/*https://www.npmjs.com/package/bvalid*/
const bv = require('bvalid');
const logpath = "/var/log/application_name";
const getFileDateTime = ()=>{
var current_date = new Date();
return current_date.getFullYear()+'_'+(current_date.getMonth()+1)+'_'+current_date.getDate();
}
const getFileName = (dir)=>{
var _f = logpath;
if(bv.isString(dir)){
_f += dir + '/';
}else{
_f += 'application/'
}
return _f + getFileDateTime() + '.log';
}
var debug = (dir)=>{
var _fn = getFileName(dir);
return winston.createLogger({
levels: {
debug: 0
},
transports: [
new (winston.transports.File)({ filename: _fn, level: 'debug'}),
new (winston.transports.Console)({level: 'debug'})
]
});
}
var info = (dir)=>{
var _fn = getFileName(dir);
return winston.createLogger({
levels: {
info: 1
},
transports: [
new (winston.transports.File)({ filename: _fn, level: 'info'}),
new (winston.transports.Console)({level: 'info'})
]
});
}
var warn = (dir)=>{
var _fn = getFileName(dir);
return winston.createLogger({
levels: {
warn: 2
},
transports: [
new (winston.transports.File)({ filename: _fn, level: 'warn'}),
new (winston.transports.Console)({level: 'warn'})
]
});
}
var error = (dir)=>{
var _fn = getFileName(dir);
return winston.createLogger({
levels: {
error: 3
},
transports: [
new (winston.transports.File)({ filename: _fn, level: 'error'}),
new (winston.transports.Console)({level: 'error'})
]
});
}
var exports = {
debug: function(msg,dir){
debug(dir).debug(msg);
},
info: function(msg,dir){
info(dir).info(msg);
},
warn: function(msg,dir){
warn(dir).warn(msg);
},
error: function(msg,dir){
error(dir).error(msg);
},
log: function(level,msg,dir){
var lvl = exports[level];
lvl(msg,dir);
}
};
module.exports = exports;
//------------------------------------------------------------------------------------//
//---------------------------------Usage in another file-------------------------------//
var logger = require('path_to_winston_config");
logger.debug("message","dirname"); //is no dir name it will save in application folder in logpath
//or
/* |level| |message| |dirname| */
logger.log("error","message","dirname");
//------------------------------------------------------------------------------------//
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment