Guest User

Untitled

a guest
Jan 20th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. const logLevel = !args['v'] || args['v'] === true ? 0 : parseInt(args['v']);
  2. const chalk = new Chalk.constructor({enabled: useColor});
  3. const nameLength = args['format-name-length'] || 25;
  4.  
  5. class Logger{
  6. constructor(name='', _stdout=stdout, _stderr=stderr){
  7. this._name = this._getPaddedName(name);
  8. this._stdout = _stdout;
  9. this._stderr = _stderr;
  10. this.error.bind(this);
  11. this.info.bind(this);
  12. this.warn.bind(this);
  13. }
  14. error(level, ...args){
  15. if(level <= logLevel){
  16. this._print(this._stderr, args, 'red', level);
  17. }
  18. }
  19. info(level, ...args){
  20. if(level <= logLevel){
  21. this._print(this._stdout, args, 'blue', level);
  22. }
  23. }
  24. warn(level, ...args){
  25. if(level <= logLevel){
  26. this._print(this._stderr, args, 'yellow', level);
  27. }
  28. }
  29. _getLogId(color, level){
  30. return chalk[color](
  31. moment().format("YYYY:MM:DD h:mm:ss")
  32. + ` ${this._name}`
  33. + ` [${level}]: `
  34. );
  35. }
  36. _getPaddedName(name){
  37. let nameArray = name.split('')
  38. .slice(0, nameLength);
  39. if(nameLength > name.length){
  40. nameArray = nameArray
  41. .concat(new Array(nameLength - name.length).fill(null));
  42. }
  43. let ellipsis = nameArray.slice(nameLength - 3)
  44. .reduce((prev, next)=>!!(prev || next), false);
  45. return nameArray
  46. .slice(0, nameLength - 3)
  47. .map(char=>char || '-')
  48. .concat(ellipsis ? ['.', '.', '.'] : ['-', '-', '-'])
  49. .join('');
  50. }
  51. _format(arg, color, level){
  52. let logId = this._getLogId(color, level);
  53. return util.format(arg)
  54. .replace(/^/, logId)
  55. .replace(/(r?n)/g, `n${logId}`)
  56. .replace(/((?:r?n)?$)/, 'n');
  57. }
  58. _print(stream, args, color, level){
  59. args.forEach(arg=>{
  60. if(arg !== ''){
  61. stream.write(this._format(arg, color, level));
  62. }
  63. });
  64. }
  65. }
  66.  
  67. let defaultLogger = new Logger('logger');
  68.  
  69. Logger.error = defaultLogger.error.bind(defaultLogger);
  70. Logger.info = defaultLogger.info.bind(defaultLogger);
  71. Logger.warn = defaultLogger.warn.bind(defaultLogger);
  72.  
  73. return Logger;
Add Comment
Please, Sign In to add comment