Advertisement
Guest User

Untitled

a guest
Jun 29th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. class CustomConsole {
  2. constructor( prefix, initial = prefix.substr( 0, 2 ) ) {
  3. this.LOG_LEVELS = [ `error`, `warn`, `info`, `log`, `trace` ];
  4. this.indent = ``;
  5. this.globalPrefix = prefix;
  6. this.initialPrefix = initial;
  7. this.logLevel = this.LOG_LEVELS.indexOf( `info` );
  8. }
  9.  
  10. _write( data, channel = `info`, prefix = false, unfomatted = false ) {
  11. if ( this.LOG_LEVELS.indexOf( channel ) <= this.logLevel ) {
  12. const template = unfomatted ? data :
  13. `${this.indent}[${channel.toUpperCase()}] [${this.initialPrefix}]${prefix ? ` -${prefix}-` : ``} ${data}`;
  14. switch ( channel ) {
  15. case `log`:
  16. console.log( template );
  17. break;
  18. case `info`:
  19. console.info( template );
  20. break;
  21. case `warn`:
  22. console.warn( template );
  23. break;
  24. case `error`:
  25. console.error( template );
  26. break;
  27. case `trace`:
  28. console.trace( template );
  29. break;
  30. default:
  31. throw new Error( `Invalid Channel ${channel}!` );
  32. }
  33. }
  34. }
  35.  
  36. error( data, prefix = false ) {
  37. this._write( data, `error`, prefix );
  38. }
  39.  
  40. warn( data, prefix = false ) {
  41. this._write( data, `warn`, prefix );
  42. }
  43.  
  44. info( data, prefix = false ) {
  45. this._write( data, `info`, prefix );
  46. }
  47.  
  48. log( data, prefix = false ) {
  49. this._write( data, `log`, prefix );
  50. }
  51.  
  52. trace( data, prefix = false ) {
  53. this._write( data, `trace`, prefix );
  54. }
  55.  
  56. entrance( label = false, loglevel = `info` ) {
  57. const template = label ? `<${label}>` : `[${this.globalPrefix}]`;
  58. this._write( `
  59. ${this.indent}${template} - Starting...
  60. `, loglevel, false, true );
  61. this.indent = `${this.indent} `;
  62. console.group( template );
  63. }
  64.  
  65. exit( label = false, loglevel = `info` ) {
  66. const template = label ? `<${label}>` : `[${this.globalPrefix}]`;
  67. console.groupEnd( label ? label : this.globalPrefix );
  68. this.indent = this.indent.substr( 2 );
  69. this._write( `
  70. ${this.indent}${template} - Completed!
  71. `, loglevel, false, true );
  72. }
  73.  
  74. setLogLevel( level ) {
  75. this.logLevel = typeof level === `string` ? this.LOG_LEVELS.indexOf( level ) : level;
  76. this.info( `Log Level = ${level}.`, `Setting` );
  77. }
  78. }
  79.  
  80. // Demostration
  81. const LOG = new CustomConsole( `My Awsome Logger`, `MAL` );
  82. LOG.entrance();
  83. for ( const l of LOG.LOG_LEVELS ) {
  84. LOG.setLogLevel( l );
  85. LOG.entrance( `Log level ${l}` );
  86. LOG.log( `This is log ${l}.` );
  87. LOG.info( `This is info ${l}.` );
  88. LOG.warn( `This is warn ${l}.` );
  89. LOG.error( `This is error ${l}.` );
  90. LOG.trace( `This is trace ${l}.` );
  91. LOG.exit( `Log level ${l}` );
  92. }
  93. LOG.exit();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement