Skip to content

d0rianb/logger-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logger library

npm version npm downloads

logger-js is a npm logger library for NodeJS

This logger is primarly designed for a backend usage, to handle the logs of a node server, or for a bot. It's lighter and easier to use than other libraries and does not require any configuration (at least for a small/medium project). It's particulary fast and require almost no running time.

The logger will write the logs by default in the logs/ directory to the root of your project. You can change the location and the name of this folder. The default log file is logs.log.

This project is part of the vener.fr project, to collect the errors and different information of the server (express).

Installation

To install the package, just run :

npm install --save @dorianb/logger-js

Then in the .js file :

const Logger = require('@dorianb/logger-js')

Logger.info('Server is starting on port 9000')
Logger.debug('172 clients are currently connected')
Logger.warn('Unsafe call from client @7655671')
Logger.error('Socket &[email protected] doesn\'t exist')
Logger.fatal('Internet connection lost')

Documentation

Classes

Logger

Typedefs

LevelsObject : Object

A dictionary of the logger levels indexed by priority

OptionsObject : Object

Logger

Logger.options ⇒ OptionsObject

Getter: Return the options of the logger
Example

const loggerOptions = Logger.options

Logger.version ⇒ string

Returns: string - the version number of the logger
Getter: Version getter
Example

const version = Logger.version

Logger.levels ⇒ LevelsObject

Getter: Levels object getter - All the levels of the logger
Example

const levels = Logger.levels

Logger.setOptions(opts)

Param Type Description
opts OptionsObject logger default values

Example

Logger.setOptions({filename: 'production.log'})

Logger.log(filename, level, message) ↩︎

Chainable

Param Type Description
filename string file where the log is written
level number | string level of the log
message string content of the log

Example

Logger.log('network.log', 'WARN', 'Socket disconnected')
Logger.log('network.log', 2, 'Socket disconnected')
// --> [10-06-2020 06:43:51] - WARN - Socket disconnected

Logger.info(info, [filename]) ↩︎

Chainable

Param Type Default Description
info string content of the log
[filename] string "options.filename" filename without path

Example

Logger.info('Server has started')
Logger.info('Server has started', 'server.log')

Logger.debug(debug, [filename]) ↩︎

Chainable

Param Type Default Description
debug string content of the log
[filename] string "options.filename" filename without path

Example

Logger.debug(`Client ID = ${clientID}`)
Logger.debug(`Client ID = ${clientID}`, 'clients.log')

Logger.warn(warning, [filename]) ↩︎

Chainable

Param Type Default Description
warning string content of the log
[filename] string "options.filename" filename without path

Example

Logger.warn(`Database disconnected`)
Logger.warn(`Database disconnected`, 'connections.log')

Logger.error(error, [filename], [opts]) ↩︎

Chainable

Param Type Default Description
error string content of the log
[filename] string "options.filename" filename without path
[opts] object {} options

Example

Logger.error(`Connection to 127.0.0.1:2000 refused`)
Logger.error(`Connection to 127.0.0.1:2000 refused`, 'logs.log')

Logger.fatal(error, [filename]) ↩︎

Chainable

Param Type Default Description
error string content of the log
[filename] string "options.filename" filename without path

Example

Logger.fatal(`Division by zero`)
Logger.fatal(`Division by zero`, 'big_errors.log')

Logger.clear([...filename]) ↩︎

Chainable

Param Type Default Description
[...filename] string "options.filename" The filenames of the files to clear or 'all' if all the files should be cleaned

Example

Logger.clear() // clear the default file (options.filename)
Logger.clear('client.log')
Logger.clear('client.log', 'connections.log', 'logs.log')
Logger.clear('all')

Logger.getLevel(level) ⇒ array

Returns: array - [index, label]

Param Type Description
level string | number the index or the label of the level

Example

const testLevel = Logger.getLevel('warn') // --> ["2", "WARN"]
const testLevel = Logger.getLevel(2)      // --> ["2", "WARN"]

Logger.addLevel(newLevel) ⇒ array

Returns: array - the level array : [index, label]

Param Type Description
newLevel string The label of the new level

Example

const [importantLevel, importantLabel] = Logger.addLevel('Important')
Logger.log('logs.log', importantLevel, 'Important message which will be display on top of all other levels')

Logger.on(event, callback)

Param Type Description
event string 'log'
callback function

Example

Logger.on('log', log => console.log(log))
Logger.on('error', handleErrorsFunction)


LevelsObject : Object

A dictionary of the logger levels indexed by priority

Example

levels = {
     0: 'INFO',
     1: 'DEBUG',
     2: 'WARNING',
     3: 'ERROR',
     4: 'FATAL'
 }

OptionsObject : Object

Properties

Name Type Default Description
[filename] string "'logs.log'" The name of the default log file
[folder] string "'./logs/'" The folder where logs files will be located (sorry for the name, couldn't find more descriptive)
[extension] string "'.log'" The extension to use for logs files
[useMoment] boolean false Use moment-js to format the dates. Allow timezone options but has a performance cost
[timezone] string "'Europe/Berlin'" The moment timezone for the date
[console_logs] boolean false Use console.log to displays logs instead of writing it in a log file
[displayLevel] string | number 0 The level below a log is not displayed
[showPID] boolean false Display the PID of the process in the log
[showHostname] boolean false Display the hostname in the log
[align] string "left" Where should the level be aligned ('left'


2020 © Dorian Beauchesne

About

A npm logger library for NodeJS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published