Simpler logging

This commit is contained in:
Nick Farina
2015-07-16 13:09:01 -07:00
parent 342a7ccc98
commit 94ad9eddcb
4 changed files with 47 additions and 15 deletions

View File

@@ -3,8 +3,8 @@ import request from 'request';
// Create a logger for our provider
let log = homebridge.logger('homebridge-lockitron');
// Demonstrate that we were loaded
log.info("Lockitron provider loaded!");
// Demonstrate that we were loaded - run homebridge with the "-D" option to see this message
log.debug("Lockitron provider loaded!");
module.exports = {

View File

@@ -1,17 +1,18 @@
import program from 'commander';
import log from 'npmlog';
import prompt from 'prompt';
import { HOMEBRIDGE_VERSION } from './homebridge';
import { User } from './user';
import { Server } from './server';
import { Provider } from './provider';
import { log, setDebugEnabled } from './logger';
import { camelCaseToRegularForm } from './util';
export default function() {
// Global options (none currently) and version printout
program
.version(HOMEBRIDGE_VERSION);
.version(HOMEBRIDGE_VERSION)
.option('-D, --debug', 'turn on debug level logging', () => setDebugEnabled(true));
// Run the HomeBridge server
program
@@ -48,13 +49,13 @@ function runServer(options) {
this.providerModules = providers.map((provider) => provider.load());
}
catch (err) {
console.log(err.message);
log.error(err.message);
process.exit(1);
}
}
function listInstalledProviders(options) {
Provider.installed().forEach((provider) => console.log(provider.name));
Provider.installed().forEach((provider) => log.info(provider.name));
}
// Encapsulates configuring a provider via the command line.
@@ -64,7 +65,7 @@ class CliProviderSetup {
// if you didn't specify a provider, print help
if (!providerName) {
log.error("You must specify the name of the provider to setup. Type 'homebridge providers' to list the providers currently installed.");
program.help();
process.exit(1);
}
this.providerName = providerName;
@@ -117,7 +118,7 @@ class CliProviderSetup {
log.info(`Setup complete.`);
}
else {
log.error(`Setup failed: ${err.message}`);
log.error(`Setup failed: ${err.message || err}`);
}
}

View File

@@ -1,4 +1,11 @@
import log from 'npmlog';
import chalk from 'chalk';
let DEBUG_ENABLED = false;
// Turns on debug level logging
export function setDebugEnabled(enabled) {
DEBUG_ENABLED = enabled;
}
// global cache of logger instances by provider name
let loggerCache = {};
@@ -8,20 +15,44 @@ export class Logger {
constructor(providerName: string) {
this.providerName = providerName;
}
debug(msg: string) {
if (DEBUG_ENABLED)
this.log('debug', msg);
}
info(msg: string) {
log.info(`[${this.providerName}] ${msg}`);
this.log('info', msg);
}
warn(msg: string) {
log.warn(`[${this.providerName}] ${msg}`);
this.log('warn', msg);
}
error(msg: string) {
log.error(`[${this.providerName}] ${msg}`);
this.log('error', msg);
}
static forProvider(providerName: string):Logger {
log(level: string, msg: string) {
if (level == 'debug')
msg = chalk.gray(msg);
else if (level == 'warn')
msg = chalk.yellow(msg);
else if (level == 'error')
msg = chalk.bold.red(msg);
// prepend provider name if applicable
if (this.providerName)
msg = chalk.cyan(`[${this.providerName}]`) + " " + msg;
console.log(msg);
}
static forProvider(providerName: string): Logger {
return loggerCache[providerName] || (loggerCache[providerName] = new Logger(providerName));
}
}
}
// system logger, for internal use only
export let log = new Logger();

View File

@@ -27,9 +27,9 @@
"preferGlobal": true,
"dependencies": {
"babel": "^5.6.14",
"chalk": "^1.1.0",
"commander": "^2.8.1",
"hap-nodejs": "git+https://github.com/khaost/HAP-NodeJS#2a1bc8d99a2009317ab5da93faebea34c89f197c",
"npmlog": "^1.2.1",
"prompt": "^0.2.14",
"semver": "^4.3.6"
}