SimpleLogApp API for Homey-Developers
Minimal lightweight logging for Homey Apps
This module can be used in a Homey App to send logs to the SimpleLogApp
Setting it up
Install:
npm install homey-simplelog-api
Add permission:
"permissions": ["homey:app:nl.nielsdeklerk.log"]
Import package:
const { SimpleLogMixin } = require('homey-simplelog-api');
Define SimpleLog mixim:
module.exports = class MyApp extends SimpleLogMixin(Homey.App)
Use it:
this.logDebug('So easy it goes');
API
Error: error conditions
this.logError('logError-Message');
Warning: warning conditions
this.logWarning('logWarning-Message');
Notice: normal but significant condition
this.logNotice('logNotice-Message');
Informational: informational messages
this.logInfo('logInfo-Message');
Debug: debug-level messages
this.logDebug('logDebug-Message');
Code examples
Homey app
'use strict';
const Homey = require('homey');
const { SimpleLogMixin } = require('homey-simplelog-api');
// Development
if (process.env.DEBUG === '1') {
try {
// eslint-disable-next-line global-require
require('node:inspector').waitForDebugger();
} catch (err) {
// eslint-disable-next-line global-require
require('node:inspector').open(9229, '0.0.0.0', true);
}
}
module.exports = class App extends SimpleLogMixin(Homey.App) {
async onInit() {
this.logDebug('onInit()');
// ...
this.logInfo(`${this.homey.manifest.name.en} - v${this.homey.manifest.version} is started`);
}
}
Homey driver
'use strict';
const Homey = require('homey');
const { SimpleLogMixin } = require('homey-simplelog-api');
module.exports = class Driver extends SimpleLogMixin(Homey.Driver) {
async onInit(options = {}) {
this.logDebug('onInit()');
// ...
}
}
Homey device
const Homey = require('homey');
const { SimpleLogMixin } = require('homey-simplelog-api');
module.exports = class Device extends SimpleLogMixin(Homey.Device) {
async onInit() {
this.logDebug('onInit()');
// ...
}
}
Homey SimpleClass or Object
// ToDo
Migrations guide
Preferred
Rename the methods, it's fast (global search & replace), the code is more readable and the method calls the console message at the end anyway.
- this.log() > (rename-to) > this.logInfo()
- this.error() > (rename-to) > this.logError()
- this.debug() > (rename-to) > this.logDebug()
Useful Links
Logging
Mixin
ToDo
- TypeScript integration
- Add uncaughtException or unhandledRejection to log see.
Thanks
....
Disclaimer
Use at your own risk. I accept no responsibility for any damages caused by using this app.
Copyright
© Chris Gross / cflat-inc.org, 2023