npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gracelog

v0.7.9

Published

Log management module

Downloads

5,021

Readme

gracelog

Install

npm install gracelog

How To Use

var gracelog = require('gracelog');
var logger = gracelog.create();
logger.verbose('something not so important to log.');
logger.sys('sys message to log...');
logger.debug('debug message to log...');
logger.trace('logging message with stack trace.');
logger.table([1,2,3,4]);
logger.info('something important');
logger.error('some error');
logger.fatal('this is bad...');

Configurations

.config(configData [object])

If you do not call this function, the module will be running in its default configurations.

"stackdriver": <bool> // logger.error will use stackdriver format: https://cloud.google.com/error-reporting/docs/formatting-error-messages
"rotationType": <string> // define log file rotation type [year|month|day|hour]. Default is day
"useTimestamp": <bool> // if given true, the logging time will be in Unix timestamp instead of the server time
"bufferSize": <int> // log data buffer size in memory (bytes),
"bufferFlushInterval": <int> // log data buffer auto flush interval in milliseconds,
"oneFile": <boolean> // if true, file logging will be combined to one file for all logging levels. default is false
"file": "<log directory path> or false"
"compress": true or false, // if true, objects will be printed as a single line output
"console": true or false,
"remote": <object> or null/false,
"color": true or false,
"showHidden": true or false, // show hidden properties of object
"depth": <integer> // recursive depth of object
"level": [
    "verbose",
    "sys",
    "debug",
    "trace",
    "info",
    "warn",
    "error",
    "fatal",
]

};

gracelog.config(configData); var logger = gracelog.create();


### Configurations for log levels

There are 8 log levels in log module:

`verbose, sys, debug, trace, info, warn, error, fatal`

Example:

var configData = { "console": true, "color": true, "level": [ "info", "warn", "error", "fatal" ] };

gracelog.confoig(configData);


The above configurations will enable `info`, `warn`, `error`, and `fatal`.

The same configurations can be done by:

var configData = { "console": true, "color": true, "level": ">= info" };

gracelog.config(configData);


***

### Buffering

Log module buffers log data in memory before outputting into file/remote/console.

The defualt buffer size is 8kb (8129 bytes) and default bufferFlushInterval is 5 seconds (5000 ms).

***

#### file

If the path to file is set, gracelog will log into files.

Log files are auto-rotated by YYYY/MM/DD.

`"file": "path to log file directory" or false/null`

#### remote

If the configurations for `remote` logging is provided, gracelog sends log data via UDP protocol.

**Configurations**

var gracelog = require('gracelog'); var configData = { remote: { host: 'localhost', port: 8000 } }; gracelog.config(configData);


#### console

If set to true, gracelog will send log to stdout/stderr stream of your application's process.

Log module uses console object of node.js. This is a blocking operation. It is better to turn this option off in production.

`"console": true or false`

#### color

If set to true, gracelog will color log text.

Each log level has different color.

`"color": true or false`

#### showHidden

If set to true, gracelog will log hidden properties of objects.

`"showHidden": true or false`

#### depth

Decides how far log module should recursively display objects.

`"depth": <integer>`

#### level

Log module has 6 log levels. If set to false, gracelog will ignored that level.

Each log level can be configured.

"level": ">= verbose"


Or

"level": [ "verbose", "sys", "debug", "info", "warn", "error", "fatal" ]


Or

"level": { "verbose": , "sys": , "debug": , "info": , "warn": , "error": , "fatal": }


***

## Events: *output*

gracelog.on('output', function (address, name, level, messageObj) { // address: IP address of the server // name: the name that was set on gracelog.create() // level: verbose, debug, info, warn, error, or fatal // messageObj: { message, timestamp } });


***

### .clean(callback [function])

Cleans up logging data.

Useful to invoke this function before exiting an application process.

### .setPrefix(prefix [string])

Sets a prefix for each logging.

### .forceFlush(callback [function])

Forcefully flushes all buffered log data and write immediately.

### .create(logName [*string])

Returns an instance of logger object.

If `logName` is not provided, it will default to the file name (full path) of script calling it.

### .isEnabled(levelName [string])

Returns Boolean. If given log level name is enabled, it returns true. 

***

## Logger Object

### API: *createTable*

Creates a table data for logging from a javascript object.

var tableData = logger.createTable(sqlResult); logger.debug(tableData);


### API: *verbose*

<pre>
void verbose(mixed data, [...])
</pre>

### API: *sys*

<pre>
void sys(mixed data, [...])
</pre>

### API: *debug*

<pre>
void debug(mixed data, [...])
</pre>

### API: *table*

<pre>
void table(mixed data, [...])
</pre>

Outputs log at `debug` level and converts objects into tables.

Example:

var test = { one: { name: 'testOne', value: 1, language: '日本語', }, two: { name: 'testTwo<2>', language: 'こんにちは', ident: '02' }, three: { name: 'testThree<3>', value: 3, language: 'ありがとうございます', list: ['A', 'B', 'C'], map: { c: 'c', d: 'd' } }, five: { name: '魏民以夜光為怪石', language: 'chinese' }, six: { name: 'korean', value: -200, language: '해빛', list: [10, 20, 30] } }; logger.table(test);


The output of the above code would be:

**NOTE:** Spacing is off in this example, but the actual output would have correct spacing.

+---------+--------------------+-----------------------------------------+------------------------+--------+----------+-----------------+ | (index) | name | value | language | ident | list | map | +---------+--------------------+-----------------------------------------+------------------------+--------+----------+-----------------+ | one | "testOne" | 1 | "日本語" | | | | +---------+--------------------+-----------------------------------------+------------------------+--------+----------+-----------------+ | two | "testTwo<2>" | | "こんにちは" | "02" | | | +---------+--------------------+-----------------------------------------+------------------------+--------+----------+-----------------+ | three | "testThree<3>" | 3 | "ありがとうございます" | | A,B,C | [object Object] | +---------+--------------------+-----------------------------------------+------------------------+--------+----------+-----------------+ | five | "魏民以夜光為怪石" | | "chinese" | | | | +---------+--------------------+-----------------------------------------+------------------------+--------+----------+-----------------+ | six | "korean" | -200 | "해빛" | | 10,20,30 | | +---------+--------------------+-----------------------------------------+------------------------+--------+----------+-----------------+


### API: *trace*

`.trace()` outputs a stack trace for debugging.

### API: *info*

<pre>
void info(mixed data, [...])
</pre>

### API: *warn*

<pre>
void warn(mixed data, [...])
</pre>

### API: *warning*
Alias of warn
<pre>
void warning(mixed data, [...])
</pre>

### API: *error*

<pre>
void error(mixed data, [...])
</pre>

### API: *fatal*

<pre>
void fatal(mixed data, [...])
</pre>

***