@@ -28,6 +28,9 @@ const defaultLevelFormatter = (level) => {
2828
2929const defaultTemplate = '[%t] %l [%n]:'
3030
31+ // "Nice" default options, they make log lines like:
32+ // [2019-02-18T00:37:56.007] WARN [root]: This is a warning message
33+ // With colored log level, according to serverity.
3134const defaultOptions = {
3235 levelFormatter : defaultLevelFormatter ,
3336 timestampFormatter : defaultTimestampFormatter ,
@@ -38,13 +41,31 @@ const defaultOptions = {
3841
3942const _loggersByName = { }
4043
44+ /**
45+ * Subclass of loglevel's Logger,
46+ * Preset to use loglevel-plugin-prefix with some nice default options.
47+ * Can obtain child loggers by calling .getLogger, they will inherit
48+ * parent's options.
49+ */
4150class MonkLogger extends logLevel . constructor {
4251 constructor ( name , level , options ) {
4352 super ( name , level )
4453 this . options = { ...defaultOptions }
4554 this . configure ( options )
4655 }
4756
57+ /**
58+ * Configure the logger, accepts all loglevel-plugin-prefix options
59+ * and the loglevel (`level` key).
60+ *
61+ * @param {object } options - new option values to update
62+ * @param {boolean } [reset=false] - if false (the default), it will keep
63+ * and update current options (e.g. options inherited from parents or
64+ * a previous call to configure). When true, if will first reset options
65+ * to default ones, and then update with supplied ones.
66+ * Therefore, you can use .configure({}, true) to completely reset
67+ * options to defaults.
68+ */
4869 configure ( options , reset = false ) {
4970 this . options = {
5071 ...( reset ? defaultOptions : this . options ) ,
@@ -54,6 +75,12 @@ class MonkLogger extends logLevel.constructor {
5475 prefix . apply ( this , this . options )
5576 }
5677
78+ /**
79+ *
80+ * @param {string } name - child logger name
81+ * @param {string } level - only output log messages of at least this level
82+ * @param {object } options - loglevel-plugin-prefix options
83+ */
5784 getLogger ( name , level , options ) {
5885 if ( typeof name !== "string" || name === "" ) {
5986 throw new TypeError ( "You must supply a name when creating a logger." )
@@ -72,4 +99,6 @@ prefix.reg(logLevel)
7299const defaultLogger = new MonkLogger ( 'root' )
73100defaultLogger . getLoggers = ( ) => _loggersByName
74101
102+ // Export default logger. Can be used directly, or can be used
103+ // to obtain child loggers.
75104module . exports = defaultLogger
0 commit comments