## Classes
Cologne
Utilities
## Objects
Formatters : object

Namespace that includes the built-in formatters.

Loggers : object

Namespace that includes the built-in loggers.

## Typedefs
tCologneLog : object

The main cologne log format.

## Interfaces
ILogger

Main interface for Cologne Loggers

IFormatter

Main interface for Cologne Formatters

## ILogger Main interface for Cologne Loggers **Kind**: global interface ### ILogger.log() Receives any number of cologne log objects and logs them. **Kind**: static method of [ILogger](#ILogger) ## IFormatter Main interface for Cologne Formatters **Kind**: global interface ### IFormatter.format(logObject) ⇒ string Receives a cologne log object and returns a formatted string. **Kind**: static method of [IFormatter](#IFormatter) **Returns**: string - the formatted log | Param | Type | Description | | --- | --- | --- | | logObject | [tCologneLog](#tCologneLog) | the log to be formatted | ## Cologne **Kind**: global class * [Cologne](#Cologne) * [new Cologne()](#new_Cologne_new) * [.from](#Cologne+from) : String * [.loggers](#Cologne+loggers) : [Array.<ILogger>](#ILogger) * [.addLogger(logger)](#Cologne+addLogger) * [.removeLogger(logger)](#Cologne+removeLogger) ⇒ [Array.<ILogger>](#ILogger) * [.buildLog(message, [level])](#Cologne+buildLog) ⇒ [tCologneLog](#tCologneLog) * [.log()](#Cologne+log) * [.debug()](#Cologne+debug) * [.info()](#Cologne+info) * [.notice()](#Cologne+notice) * [.warn()](#Cologne+warn) * [.error()](#Cologne+error) ### new Cologne() The main logger class. It can be instantiated with loggers in order to send messages to different destinations. ### cologne.from : String The name of this logger, useful to distinguish between different loggers. **Kind**: instance property of [Cologne](#Cologne) **Default**: 'Generic Cologne Logger ### cologne.loggers : [Array.<ILogger>](#ILogger) The array containing all the loggers it will call to. **Kind**: instance property of [Cologne](#Cologne) **Default**: [] ### cologne.addLogger(logger) Adds a logger to the current instance. **Kind**: instance method of [Cologne](#Cologne) | Param | Type | Description | | --- | --- | --- | | logger | [ILogger](#ILogger) | the logger to add | ### cologne.removeLogger(logger) ⇒ [Array.<ILogger>](#ILogger) Removes a logger from the current instance. **Kind**: instance method of [Cologne](#Cologne) **Returns**: [Array.<ILogger>](#ILogger) - the removed log, inside an array. | Param | Type | Description | | --- | --- | --- | | logger | [ILogger](#ILogger) | the logger to remove | ### cologne.buildLog(message, [level]) ⇒ [tCologneLog](#tCologneLog) Given a message, it builds a cologne log object without logging it. If you send a cologne log object, it will only update the level. If the message is an object, the log object will be extended with its properties. **Kind**: instance method of [Cologne](#Cologne) **Returns**: [tCologneLog](#tCologneLog) - a cologne log object | Param | Type | Default | Description | | --- | --- | --- | --- | | message | \* | | The message to log | | [level] | number | 6 | The level of the message to log | ### cologne.log() Default log function. Sends arguments to loggers. If not specified in log object, it will set the severity to 6 - INFO. **Kind**: instance method of [Cologne](#Cologne) ### cologne.debug() Logs with debug level **Kind**: instance method of [Cologne](#Cologne) ### cologne.info() Logs with info level **Kind**: instance method of [Cologne](#Cologne) ### cologne.notice() Logs with notice level **Kind**: instance method of [Cologne](#Cologne) ### cologne.warn() Logs with warn level **Kind**: instance method of [Cologne](#Cologne) ### cologne.error() Logs with error level **Kind**: instance method of [Cologne](#Cologne) ## Utilities **Kind**: global class * [Utilities](#Utilities) * [new Utilities()](#new_Utilities_new) * [.now()](#Utilities.now) ⇒ bigint * [.stringify(object)](#Utilities.stringify) ⇒ String * [.getAnsiCode(ansiString)](#Utilities.getAnsiCode) ⇒ String * [.getLevelAnsi(level)](#Utilities.getLevelAnsi) ⇒ String ### new Utilities() Container object for utilities used by loggers. ### Utilities.now() ⇒ bigint Returns the current timestamp in nanoseconds as a bigint. **Kind**: static method of [Utilities](#Utilities) **Returns**: bigint - current time in nanoseconds, including fractions. ### Utilities.stringify(object) ⇒ String Stringifies objects, avoiding circular references. **Kind**: static method of [Utilities](#Utilities) **Returns**: String - the stringified object | Param | Type | Description | | --- | --- | --- | | object | Object | the object to stringify | ### Utilities.getAnsiCode(ansiString) ⇒ String Given an ansi keyword, it will return the appropriate code. **Kind**: static method of [Utilities](#Utilities) **Returns**: String - the ansi code | Param | Type | Description | | --- | --- | --- | | ansiString | String | the name of the desired code | ### Utilities.getLevelAnsi(level) ⇒ String Given a level, it will return the appropriate ansi keyword related to it. **Kind**: static method of [Utilities](#Utilities) **Returns**: String - the ansi keyword | Param | Type | Description | | --- | --- | --- | | level | number | the level of the log | ## Formatters : object Namespace that includes the built-in formatters. **Kind**: global namespace * [Formatters](#Formatters) : object * [.Simple](#Formatters.Simple) * [new Simple()](#new_Formatters.Simple_new) * [.colorize](#Formatters.Simple+colorize) : Boolean * [.format(logObjet)](#Formatters.Simple+format) ⇒ String * [.Token](#Formatters.Token) * [new Token()](#new_Formatters.Token_new) * [.formatString](#Formatters.Token+formatString) : String * [.replaceRule](#Formatters.Token+replaceRule) : RegExp * [.isoDate](#Formatters.Token+isoDate) : Boolean * [.format(log)](#Formatters.Token+format) ⇒ String ### Formatters.Simple **Kind**: static class of [Formatters](#Formatters) **Implements**: [IFormatter](#IFormatter) * [.Simple](#Formatters.Simple) * [new Simple()](#new_Formatters.Simple_new) * [.colorize](#Formatters.Simple+colorize) : Boolean * [.format(logObjet)](#Formatters.Simple+format) ⇒ String #### new Simple() Simple formatter. Outputs a predefined format: `[{{_timestamp}}][{{_levelString}}] {{_from}}: {{message}}`; #### simple.colorize : Boolean Flag that tells us whether or not to use ANSI color. Defaults to false. **Kind**: instance property of [Simple](#Formatters.Simple) **Default**: false #### simple.format(logObjet) ⇒ String Main entry point, it will read the incoming log object and convert it to the output string. **Kind**: instance method of [Simple](#Formatters.Simple) **Returns**: String - the formatted object | Param | Type | Description | | --- | --- | --- | | logObjet | [tCologneLog](#tCologneLog) | the log to format | ### Formatters.Token **Kind**: static class of [Formatters](#Formatters) **Implements**: [IFormatter](#IFormatter) * [.Token](#Formatters.Token) * [new Token()](#new_Formatters.Token_new) * [.formatString](#Formatters.Token+formatString) : String * [.replaceRule](#Formatters.Token+replaceRule) : RegExp * [.isoDate](#Formatters.Token+isoDate) : Boolean * [.format(log)](#Formatters.Token+format) ⇒ String #### new Token() Token formatter. Given a format string it will attempt to output a message. #### token.formatString : String The string to use as a template string. By default, any property inside double curly braces `{{likeThis}}` will be extracted from the object and replaced. If the object does not contain the property, it will leave it. **Kind**: instance property of [Token](#Formatters.Token) **Default**: '{{message}}' #### token.replaceRule : RegExp The regex rule to use to match the tokens. **Kind**: instance property of [Token](#Formatters.Token) **Default**: /{{(.*)}}/g #### token.isoDate : Boolean Flag that specifies whether or not to use an isoDate when using `_timestamp`. If false it will output the raw timestamp. **Kind**: instance property of [Token](#Formatters.Token) **Default**: true #### token.format(log) ⇒ String Main entry point, it will read the incoming log object and convert all the tokens to their corresponding representation, finally returning the string. **Kind**: instance method of [Token](#Formatters.Token) **Returns**: String - the formatted object | Param | Type | Description | | --- | --- | --- | | log | [tCologneLog](#tCologneLog) | the log to format | ## Loggers : object Namespace that includes the built-in loggers. **Kind**: global namespace * [Loggers](#Loggers) : object * [.Console](#Loggers.Console) * [new Console()](#new_Loggers.Console_new) * [.console](#Loggers.Console+console) : Object * [.formatter](#Loggers.Console+formatter) : [IFormatter](#IFormatter) * [.log()](#Loggers.Console+log) ⇒ undefined * [.File](#Loggers.File) * [new File()](#new_Loggers.File_new) * [.file](#Loggers.File+file) : string * [.formatter](#Loggers.File+formatter) : [IFormatter](#IFormatter) * [.log()](#Loggers.File+log) ⇒ undefined ### Loggers.Console **Kind**: static class of [Loggers](#Loggers) **Implements**: [ILogger](#ILogger) * [.Console](#Loggers.Console) * [new Console()](#new_Loggers.Console_new) * [.console](#Loggers.Console+console) : Object * [.formatter](#Loggers.Console+formatter) : [IFormatter](#IFormatter) * [.log()](#Loggers.Console+log) ⇒ undefined #### new Console() Logger for the javascript console. #### console.console : Object The console it will write to, can be any object that looks and acts like a console, including other cologne objects. **Kind**: instance property of [Console](#Loggers.Console) **Default**: global.console #### console.formatter : [IFormatter](#IFormatter) The formatter it will use to output the log. If not present it will output raw JSON **Kind**: instance property of [Console](#Loggers.Console) **Default**: null #### console.log() ⇒ undefined Main entry point, for each incoming argument it will attempt to format and send to the console. **Kind**: instance method of [Console](#Loggers.Console) ### Loggers.File **Kind**: static class of [Loggers](#Loggers) **Implements**: [ILogger](#ILogger) * [.File](#Loggers.File) * [new File()](#new_Loggers.File_new) * [.file](#Loggers.File+file) : string * [.formatter](#Loggers.File+formatter) : [IFormatter](#IFormatter) * [.log()](#Loggers.File+log) ⇒ undefined #### new File() Logger for files. #### file.file : string Path to the file it will write to, must be readable. **Kind**: instance property of [File](#Loggers.File) **Default**: "null" #### file.formatter : [IFormatter](#IFormatter) The formatter it will use to output the log. If not present it will output raw JSON **Kind**: instance property of [File](#Loggers.File) **Default**: null #### file.log() ⇒ undefined Main entry point, for each incoming argument it will attempt to format and send to the stream to be written. **Kind**: instance method of [File](#Loggers.File) ## tCologneLog : object The main cologne log format. **Kind**: global typedef **Properties** | Name | Type | Description | | --- | --- | --- | | _timestamp | Bigint | the timestamp in nanoseconds | | _cologneLog | String | main identifier, encodes the version of the cologne log format being used. | | _from | String | the origin of the log message. | | _level | String | the severity level of the log, uses syslog priorities. | | _levelString | String | the severity level keyword of the log, uses syslog priority keywords. |