Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eldoy/rainlog
Advanced command line logger with color support
https://github.com/eldoy/rainlog
color file format logger node production util
Last synced: 6 days ago
JSON representation
Advanced command line logger with color support
- Host: GitHub
- URL: https://github.com/eldoy/rainlog
- Owner: eldoy
- Created: 2018-08-21T04:33:03.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2021-02-21T19:42:49.000Z (over 3 years ago)
- Last Synced: 2024-10-22T23:36:55.414Z (23 days ago)
- Topics: color, file, format, logger, node, production, util
- Language: JavaScript
- Homepage:
- Size: 263 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Rainlog Node.js Logger
This versatile logger is an advanced ```console.log``` for your applications. It uses the built in ```util.format``` to make it easy to output strings and objects.
You can also log to file by setting it up in the configuration.
### INSTALL
```npm i rainlog```### USAGE
By default 2 loggers are included: *info* and *err*. You can add extra loggers as you please.
```javascript
const Rainlog = require('rainlog')
const log = new Rainlog()// Write to console.log using the 'info' logger
log.info('hello world')// Write to console.log using the 'error' logger
log.err('hello world')// Update config for a single logger
log.get.err.set({ file: 'error.txt' })// Update config for all loggers
log.set({ quiet: true })// Reset config for a single logger
log.get.info.reset()// Reset config for all loggers
log.reset()// Write formatted text
log.info('%s %d %o', 'hello', 2020, { world: 'amazing' })
// Output: hello 2020 { world: 'amazing' }// Use the $ function to write to file
log.$info('hello')// Add a logger to the existing log, pass name and config
// The new logger is instantly available as 'log.warn'
log.add('warn', { quiet: true })
log.warn('this logger is on fire')// Create multiple logs if you want
access = new Rainlog()
access.info('user accessed')
access.err('user not found')
```### FORMATTING
Here are the formatting options, taken from the [Node.js docs](https://nodejs.org/api/util.html#util_util_format_format_args):
```
%s - String.
%d - Number (integer or floating point value) or BigInt.
%i - Integer or BigInt.
%f - Floating point value.
%j - JSON. Replaced with the string '[Circular]' if the argument contains circular references.
%o - Object. A string representation of an object with generic JavaScript object formatting. Similar to util.inspect() with options { showHidden: true, showProxy: true }. This will show the full object including non-enumerable properties and proxies.
%O - Object. A string representation of an object with generic JavaScript object formatting. Similar to util.inspect() without options. This will show the full object not including non-enumerable properties and proxies.
%% - single percent sign ('%'). This does not consume an argument.
```### CONFIGURATION
Use the 'set' function to configure your logger. Files are not written to by default.
```javascript
// The default configuration looks like this for all loggers
{
// When quiet is true there will be no output to console
quiet: process.env.NODE_ENV === 'production',// Set the file option to a file name to also write to file
file: false,// Set colors and modifers, see the 'chalk' module for options
style: 'green.bold.underline'
}// Create the Rainlog instance
const log = new Rainlog()// Optionally pass the config to the constructor
const log = new Rainlog({ quiet: true })// Use the set function to configure your logger
log.get.info.set({ file: 'info.txt' })
log.get.err.set({ file: 'error.txt' })
```### LICENSE
MIT Licensed. Enjoy!