edge-logger
The Next.js Edge Runtime is extremely limited as to the packages it can load.
This can pose a challenge for common logging and utility packages like winston
and lodash
, which will fail when loaded into an edge resource.
Logging is a cross-cutting concern, and shouldn't have to care where it is executed. So this package is a simple, flexible logging utility that...
- formats logs attractively, whether output to the console or cloud services like AWS CloudWatch.
- features configurable logging levels (defaults to SysLog).
- can handle virtually any input, including circular object references.
- can truncate long strings for readability.
Installation
npm install @karmaniverous/edge-logger
Usage
import Logger from `@karmaniverous/edge-logger`;
const logger = new Logger();
logger.emerg('emergency message', { foo: 'bar' });
logger.alert('alert message');
logger.crit('critical message');
logger.error('error message');
logger.warning('warning message');
logger.notice('notice message');
logger.info('info message');
logger.debug('debug message');
logger.log('log message');
Configuration
Set your minimum logging level with environment variable LOG_LEVEL
(by default it is info
).
The optional constructor config
argument has the following keys:
Key | Description |
---|
defaultLevel | Default logging level (invoked by the log method). Default value set in levels object (info for default levels ). |
maxLevel | Maximum logging level. Default value set in levels object (info for default levels ). |
levels | An alternate levels definition. See below for details. |
Levels Config
Here is the default levels object:
{
emerg: { value: 0, console: 'error' },
alert: { value: 1, console: 'error' },
crit: { value: 2, console: 'error' },
error: { value: 3, console: 'error' },
warning: { value: 4, console: 'warn' },
notice: { value: 5, console: 'info' },
info: { value: 6, console: 'info', default: true, defaultMax: true },
debug: { value: 7, console: 'debug' },
}
Each key will be rendered as a function on the Logger
instance that takes a list of items, just like console.log()
.
The keys on each log level:
Key | Description |
---|
value | Supports setting the logging threshold. |
console | The console function invoked by the log level. |
default | true if the log method should trigger this level. |
defaultMax | true if default max level. |
See more great templates and other tools on
my GitHub Profile!