log-detail

Custom log format ready to go out of the box for logging to Splunk with great detail and developer friendliness

Usage no npm install needed!

<script type="module">
  import logDetail from 'https://cdn.skypack.dev/log-detail';
</script>

README

Log Detail

A log utility that is ready made to work with Splunk to provide verbose, detailed log events right out of the box.

Configuration

appName (string) [Default: 'MyApp']

The name of the application that can be included in log event

enabled (boolean) [Default: true]

Controls whether or not log events should be written.

format (string) [Default: '$timestamp $appName $namespace $uuid $level $data $message']

The format of log output. The fields available for use are all listed in the default value.

level (string) [Default: 'info'] [Options: 'debug', 'info', 'warn', 'error', 'fatal']

The log level threshold for output. If an event level is not greater than or equal to the set level the event will not be written.

timezone (string) [Default: 'local'] [Options: 'local', 'utc']

Configure whether or not to use local time or utc time. Timestamps are in ISO format.

Optional Parameters

Data Object

If you provide a generic object as an additional parameter for write methods (debug, info, warn, error, fatal) it will be included in the output broken into key/value pairs. The values will be passed through JSON.stringify in the event an object or array is provided with a key.

Error

If you pass an object that is an instance of the Error type, it will automatically be pushed into the data output of the event with the error key.

UUID

If you pass a string it will be used as the unique identifier for the log event. This can be useful if you want to use the same uuid for a series of log events. Such as tying them all to a single http request.

Example

Javascript

const { Writer } = require('log-detail');

//one time only. Or just use the default and not set it at all.
Writer.setGlobalConfiguration({
  appName: 'MyApp',
  level: 'debug'
});

let userLog = new Writer('api:user');
let groupLog = new Writer('api:group');

userLog.info('New user created', { username: 'Joel' });
groupLog.info('New group created', { groupname: 'MyGroup' });
specificGroup.info('User added to group', { username: 'Joel' });

Typescript

import { Writer } from 'log-detail';

//one time only. Or just use the default and not set it at all.
Writer.setGlobalConfiguration({
  appName: 'MyApp',
  level: 'debug'
});

let userLog = new Writer('api:user');
let groupLog = new Writer('api:group');

userLog.info('New user created', { username: 'Joel' });
groupLog.info('New group created', { groupname: 'MyGroup' });
specificGroup.info('User added to group', { username: 'Joel' });