Provider logging

This commit is contained in:
Nick Farina
2015-07-16 08:44:04 -07:00
parent 891d4033e8
commit 342a7ccc98
4 changed files with 59 additions and 4 deletions

View File

@@ -1,7 +1,10 @@
import request from 'request';
// Create a logger for our provider
let log = homebridge.logger('homebridge-lockitron');
// Demonstrate that we were loaded
console.log("Lockitron provider loaded!");
log.info("Lockitron provider loaded!");
module.exports = {
@@ -19,6 +22,9 @@ module.exports = {
let accessToken = homebridge.config.get('homebridge-lockitron.accessToken');
// prove that we got a value
console.log(`Access Token: ${accessToken}`);
log.info(`Access Token: ${accessToken}`);
// all is well.
callback();
}
}

View File

@@ -83,6 +83,9 @@ class CliProviderSetup {
prompt.start();
prompt.get(this.buildPromptSchema(), (err, result) => {
// add a linebreak after our last prompt
console.log('');
// apply configuration values entered by the user
for (let key:string in result) {
let value:object = result[key];
@@ -103,7 +106,24 @@ class CliProviderSetup {
}
validateProviderConfig() {
this.providerModule.validateConfig();
let currentlyInsideValidateConfigCall = false;
// we allow for the provider's validateConfig to call our callback immediately/synchronously
// from inside validateConfig() itself.
let callback = (err) => {
if (!err) {
log.info(`Setup complete.`);
}
else {
log.error(`Setup failed: ${err.message}`);
}
}
currentlyInsideValidateConfigCall = true;
this.providerModule.validateConfig(callback);
currentlyInsideValidateConfigCall = false;
}
// builds a "schema" obejct for the prompt lib based on the provider's config spec

View File

@@ -1,5 +1,6 @@
import fs from 'fs';
import { User } from './user';
import { Logger } from './logger';
//
// Main HomeBridge Module with global exports.
@@ -9,4 +10,5 @@ import { User } from './user';
export const HOMEBRIDGE_VERSION = JSON.parse(fs.readFileSync('package.json')).version;
// HomeBridge API
export let config = User.config;
export let config = User.config;
export let logger = Logger.forProvider;

27
lib/logger.js Normal file
View File

@@ -0,0 +1,27 @@
import log from 'npmlog';
// global cache of logger instances by provider name
let loggerCache = {};
export class Logger {
constructor(providerName: string) {
this.providerName = providerName;
}
info(msg: string) {
log.info(`[${this.providerName}] ${msg}`);
}
warn(msg: string) {
log.warn(`[${this.providerName}] ${msg}`);
}
error(msg: string) {
log.error(`[${this.providerName}] ${msg}`);
}
static forProvider(providerName: string):Logger {
return loggerCache[providerName] || (loggerCache[providerName] = new Logger(providerName));
}
}