Logging

The logger need to implement the following interface:

export interface PgDbLogger {
    log: Function;
    error: Function;
}

where log most of the time is called with 3 params: 1. sql query 2. parameter array if any 3. connection id (from the pool)

It is possible to specify separate loggers per schemas (and tables or queries). E.g.

let myDbLogger = console;
let mySchemaLogger = {log:()=>{}, error:console.error};
let myTableLogger = {log:(sql, params, connectionId) => (connectionId) ? console.log('[',connectionId,']', sql,' < ',params) : console.log(sql), 
                     error:console.error};
let myQueryLogger = console;

pgdb.setLogger(myDbLogger); //default console
pgdb.myschema.setLogger(mySchemaLogger);
pgdb.myschema.users.setLogger(myTableLogger); 

pgdb.run('SELECT password FROM myschema.users');  //logged by myDbLogger
pgdb.myschema.run('SELECT password FROM myschema.users'); //logged by mySchemaLogger
pgdb.myschema.machines.findAll(); //logged by mySchemaLogger

pgdb.myschema.users.findAll(); //logged by myTableLogger

pgdb.myschema.users.findAll({logger:myQueryLogger}); //logged by myQueryLogger

The first logger found will be the one to be used.