logelas
TypeScript icon, indicating that this package has built-in type declarations

4.1.3 • Public • Published

Logelas

Drawing

Quality Gate Status Bugs Maintainability Rating FOSSA Status

motivation

When we build large projects using modules and components, it is best to implement a logging abstraction rather than actual loging library bindings and dependecies, we can than aggregate the virtual loggers to log transports available at the installing application.

Here is a small example of a class decorated with LogClass decorator.

import { Logger, LogClass } from 'logelas'; // import logelas
const log = new Logger('test.log', 'test'); // create a new virtual logger
 
@LogClass(log) // provide the logger to the decorator
export class Controller {   
   public action1() {
       log.error(this, 'there is the rror log');
   }
}
 

Logger

create a file based logger

new Logger([filename], [debugSymbol])

@LogClass, @Log decorators

use @LogClass at the top of your class and @Log for every method you wish to log. logelas will create a log entry for every call to the method and for every value returned by it. the log file may look like this:

[2017-08-25T20:51:58.848Z] INFO   √ 100006 :: new Controller() 
[2017-08-25T20:52:02.504Z] INFO   √ 100001 :: Controller.action1 =>  
[2017-08-25T20:52:02.506Z] INFO   √ 100001 :: Controller.action1   a message from inside the method
[2017-08-25T20:52:02.506Z] INFO   √ 100002 :: Controller.action2 =>  
[2017-08-25T20:52:02.507Z] INFO   √ 100002 :: Controller.action2   a message from inside the method
[2017-08-25T20:52:02.507Z] INFO   √ 100003 :: Controller.action3 =>  
[2017-08-25T20:52:02.507Z] WARNIN ‼ 100003 :: Controller.action3   a message from inside the method
[2017-08-25T20:52:02.507Z] INFO   √ 100004 :: Controller.action4 =>  
[2017-08-25T20:52:02.507Z] DEBUG  i 100004 :: Controller.action4   a message from inside the method
[2017-08-25T20:52:02.507Z] INFO   √ 100005 :: Controller.throws =>  
[2017-08-25T20:52:02.508Z] ERROR  × 100005 :: Controller.throws ##  my bad Error: my bad
    at Controller.throws (c:\Git_work\logelas\examples\class-log.js:33:16)
    at Controller.<anonymous> (c:\Git_work\logelas\src\loggerd.js:29:53)
    at Controller.action4 (c:\Git_work\logelas\examples\class-log.js:29:14)
    at Controller.<anonymous> (c:\Git_work\logelas\src\loggerd.js:29:53)
    at Controller.action3 (c:\Git_work\logelas\examples\class-log.js:25:21)
    at Controller.<anonymous> (c:\Git_work\logelas\src\loggerd.js:29:53)
    at Controller.action2 (c:\Git_work\logelas\examples\class-log.js:21:21)
    at Controller.<anonymous> (c:\Git_work\logelas\src\loggerd.js:29:53)
    at Controller.action1 (c:\Git_work\logelas\examples\class-log.js:17:21)
    at Controller.<anonymous> (c:\Git_work\logelas\src\loggerd.js:29:53)
[2017-08-25T20:52:02.508Z] INFO   √ 100004 :: Controller.action4 <=  4
[2017-08-25T20:52:02.508Z] INFO   √ 100003 :: Controller.action3 <=  8
[2017-08-25T20:52:02.508Z] INFO   √ 100002 :: Controller.action2 <=  16
[2017-08-25T20:52:02.508Z] INFO   √ 100001 :: Controller.action1 <=  32

Manual logging

some times we need to log something within the method logic. using the same logger as the @LogClass decorator we can easily emit log messages that will automatically log the class and method names and id.

 
logger.log(this, 'my custom log entry');
logger.debug(this, 'debug this please');
logger.info(this, 'just an info lo entry');
logger.error(this, 'huston we have a problem');
logger.warn(this, 'this is the last warning');
 

truncate()

use logger.truncate() to clear the log file (useful for testing and development stages)

License

FOSSA Status

Package Sidebar

Install

npm i logelas

Weekly Downloads

75

Version

4.1.3

License

(MIT OR Apache-2.0)

Unpacked Size

356 kB

Total Files

83

Last publish

Collaborators

  • nodulus