This allows the users of 'unleash-server' to programatically change the logger implemnentation. #175
2.5 KiB
Getting stated
Requirements
You will need a PostreSQL 9.3+ database instance to be able to run Unleash.
When starting Unleash you must specify a database uri (can be set as environment variable DATABASE_URL) which includes a username and password, that have rights to migrate the database.
Unleash will, at startup, check whether database migration is needed, and perform necessary migrations.
Start Unleash
1. The simplest way to get started:
$ npm install unleash-server -g
$ unleash -d postgres://unleash_user:passord@localhost:5432/unleash -p 4242
Unleash started on http://localhost:4242
2. Or programmatically:
You can also depend on unleash
const unleash = require('unleash-server');
unleash.start({
databaseUrl: 'postgres://unleash_user:passord@localhost:5432/unleash',
port: 4242
}).then(unleash => {
console.log(`Unleash started on http://localhost:${unleash.app.get('port')}`);
});
Available unleash options includes:
- databaseUrl
- port
How do I configure the log output?
By default, unleash
uses log4js to log important information. It is possible to swap out the logger provider (only when using Unleash programatically). This enables filtering of log levels and easy redirection of output streams.
What is a logger provider?
A logger provider is a function which takes the name of a logger and returns a logger implementation. For instance, the following code snippet shows how a logger provider for the global console
object could be written:
function consoleLoggerProvider (name) {
// do something with the name
return {
debug: console.debug.bind(console),
info: console.info.bind(console),
warn: console.warn.bind(console),
error: console.error.bind(console)
};
}
The logger interface with its debug
, info
, warn
and error
methods expects format string support as seen in debug
or the JavaScript console
object. Many commonly used logging implementations cover this API, e.g. bunyan, pino or winston.
How do I set a logger provider?
Custom logger providers need to be set before requiring the unleash-server
module. The following example shows how this can be done:
// first configure the logger provider
const unleashLogger = require('unleash-server/logger');
unleashLogger.setLoggerProvider(consoleLoggerProvider);
// then require unleash-server and continue as normal
const unleash = require('unleash-server');