mirror of
https://github.com/mtan93/homebridge.git
synced 2026-04-02 22:04:20 +01:00
Simpler logging
This commit is contained in:
@@ -3,8 +3,8 @@ import request from 'request';
|
|||||||
// Create a logger for our provider
|
// Create a logger for our provider
|
||||||
let log = homebridge.logger('homebridge-lockitron');
|
let log = homebridge.logger('homebridge-lockitron');
|
||||||
|
|
||||||
// Demonstrate that we were loaded
|
// Demonstrate that we were loaded - run homebridge with the "-D" option to see this message
|
||||||
log.info("Lockitron provider loaded!");
|
log.debug("Lockitron provider loaded!");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
||||||
|
|||||||
13
lib/cli.js
13
lib/cli.js
@@ -1,17 +1,18 @@
|
|||||||
import program from 'commander';
|
import program from 'commander';
|
||||||
import log from 'npmlog';
|
|
||||||
import prompt from 'prompt';
|
import prompt from 'prompt';
|
||||||
import { HOMEBRIDGE_VERSION } from './homebridge';
|
import { HOMEBRIDGE_VERSION } from './homebridge';
|
||||||
import { User } from './user';
|
import { User } from './user';
|
||||||
import { Server } from './server';
|
import { Server } from './server';
|
||||||
import { Provider } from './provider';
|
import { Provider } from './provider';
|
||||||
|
import { log, setDebugEnabled } from './logger';
|
||||||
import { camelCaseToRegularForm } from './util';
|
import { camelCaseToRegularForm } from './util';
|
||||||
|
|
||||||
export default function() {
|
export default function() {
|
||||||
|
|
||||||
// Global options (none currently) and version printout
|
// Global options (none currently) and version printout
|
||||||
program
|
program
|
||||||
.version(HOMEBRIDGE_VERSION);
|
.version(HOMEBRIDGE_VERSION)
|
||||||
|
.option('-D, --debug', 'turn on debug level logging', () => setDebugEnabled(true));
|
||||||
|
|
||||||
// Run the HomeBridge server
|
// Run the HomeBridge server
|
||||||
program
|
program
|
||||||
@@ -48,13 +49,13 @@ function runServer(options) {
|
|||||||
this.providerModules = providers.map((provider) => provider.load());
|
this.providerModules = providers.map((provider) => provider.load());
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
console.log(err.message);
|
log.error(err.message);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function listInstalledProviders(options) {
|
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.
|
// Encapsulates configuring a provider via the command line.
|
||||||
@@ -64,7 +65,7 @@ class CliProviderSetup {
|
|||||||
// if you didn't specify a provider, print help
|
// if you didn't specify a provider, print help
|
||||||
if (!providerName) {
|
if (!providerName) {
|
||||||
log.error("You must specify the name of the provider to setup. Type 'homebridge providers' to list the providers currently installed.");
|
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;
|
this.providerName = providerName;
|
||||||
@@ -117,7 +118,7 @@ class CliProviderSetup {
|
|||||||
log.info(`Setup complete.`);
|
log.info(`Setup complete.`);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
log.error(`Setup failed: ${err.message}`);
|
log.error(`Setup failed: ${err.message || err}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
// global cache of logger instances by provider name
|
||||||
let loggerCache = {};
|
let loggerCache = {};
|
||||||
@@ -8,20 +15,44 @@ export class Logger {
|
|||||||
constructor(providerName: string) {
|
constructor(providerName: string) {
|
||||||
this.providerName = providerName;
|
this.providerName = providerName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
debug(msg: string) {
|
||||||
|
if (DEBUG_ENABLED)
|
||||||
|
this.log('debug', msg);
|
||||||
|
}
|
||||||
|
|
||||||
info(msg: string) {
|
info(msg: string) {
|
||||||
log.info(`[${this.providerName}] ${msg}`);
|
this.log('info', msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
warn(msg: string) {
|
warn(msg: string) {
|
||||||
log.warn(`[${this.providerName}] ${msg}`);
|
this.log('warn', msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
error(msg: string) {
|
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));
|
return loggerCache[providerName] || (loggerCache[providerName] = new Logger(providerName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// system logger, for internal use only
|
||||||
|
export let log = new Logger();
|
||||||
|
|||||||
@@ -27,9 +27,9 @@
|
|||||||
"preferGlobal": true,
|
"preferGlobal": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"babel": "^5.6.14",
|
"babel": "^5.6.14",
|
||||||
|
"chalk": "^1.1.0",
|
||||||
"commander": "^2.8.1",
|
"commander": "^2.8.1",
|
||||||
"hap-nodejs": "git+https://github.com/khaost/HAP-NodeJS#2a1bc8d99a2009317ab5da93faebea34c89f197c",
|
"hap-nodejs": "git+https://github.com/khaost/HAP-NodeJS#2a1bc8d99a2009317ab5da93faebea34c89f197c",
|
||||||
"npmlog": "^1.2.1",
|
|
||||||
"prompt": "^0.2.14",
|
"prompt": "^0.2.14",
|
||||||
"semver": "^4.3.6"
|
"semver": "^4.3.6"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user