1.2.2 • Published 5 years ago

sqlogs v1.2.2

Weekly downloads
1
License
MIT
Repository
-
Last release
5 years ago

sqlogs Build Status

Quickly send a copy of your console.log messages to a SQLite database that you can easily query.

$ npm install sqlogs
// Import and overwrite console.log
console.log = require('sqlogs');

// Works as usual but also writes a log entry in sqlite
console.log('Hello, world!');
$ sqlite3 sqlogs.sqlite "SELECT * FROM logs"
1| Hello, world!|2018-12-29T06:09:29.516Z|DEFAULT|INFO|

Why?

Often I find my self writing small shell scripts that perform sequential tasks that might get interrupted unexpectedly. In these situations I want to have logs stored on disk that will allow me to check when and where the script stopped and resume from that point on.

Currently I use text files to which JSON strings are appended. This works fine but when I need to filter and sort data things get complicated.

SQL makes filtering and sorting super easy.

How?

I usually start by writing a bunch of console.log statements while building the script. When I'm done I just install sqlogs and assign it to console.log at the top of the file and that's it.

The module will create a file on the same directory that the script is invoked on. The file is named ./sqlogs.sqlite. A table logs is created and all console.log statements are inserted.

Configuration

You can optionally pass an options object as the last argument to change a few settings. Currently you can set the group, level and add additional columns by setting a meta key to an object. The options object must include a sqlogs key with all options. See usage examples below.

Database schema

$ sqlite3 sqlogs.sqlite ".schema"
CREATE TABLE `logs` (`id` integer NOT NULL PRIMARY KEY, `message` text, `timestamp` text, `group` text, `level` text);

Usage Examples

// This is how I usually use this
console.log = require('sqlogs');

// Just write a simple message
console.log('Hello, world!');

// You can pass an options object
console.log('Message', { sqlogs: { group: 'my-script', level: 'DEBUG' } });

// Items in the meta key if needed
// will create columns in the database
console.log('Message', { sqlogs: { meta: { userId: '123' } } });

// Passing multiple arguments also works
console.log(
  'Uno',
  ['Dos'],
  { three: 'Tres' },
  { sqlogs: { meta: { lang: 'ES' } } }
);

Without overwriting console.log (probably a better idea)

const log = require('sqlogs');

// Just write a simple message
log('Hello, world!');

Custom database file path

If you need to customize the path of the SQLite database file you can do the following.

const { createLogger, createSqliteTransport } = require('sqlogs/advanced');
const log = createLogger(createSqliteTransport({ path: './custom.sqlite' }));
1.2.2

5 years ago

1.2.1

5 years ago

1.1.0

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago