Add trace logging and add trace logging to zigbeeQueue. https://github.com/Koenkk/zigbee2mqtt/issues/1566

This commit is contained in:
Koen Kanters 2019-06-08 19:56:35 +02:00
parent ee8161b807
commit 70fbe714e3
3 changed files with 38 additions and 5 deletions

View File

@ -30,20 +30,20 @@ class DeviceAvailability {
}
isPingable(device) {
logger.debug(`Checking if ${device.ieeeAddr} is pingable`);
logger.trace(`Checking if ${device.ieeeAddr} is pingable`);
if (this.blacklist.includes(device.ieeeAddr)) {
logger.debug(`${device.ieeeAddr} is not pingable because of blacklist`);
logger.trace(`${device.ieeeAddr} is not pingable because of blacklist`);
return false;
}
if (pingableDevices.find((d) => d.zigbeeModel.includes(device.modelId))) {
logger.debug(`${device.ieeeAddr} is pingable because in pingable devices`);
logger.trace(`${device.ieeeAddr} is pingable because in pingable devices`);
return true;
}
const result = utils.isRouter(device) && !utils.isBatteryPowered(device);
logger.debug(`${device.ieeeAddr} is pingable (${result}) not router or battery powered`);
logger.trace(`${device.ieeeAddr} is pingable (${result}) not router or battery powered`);
return result;
}

View File

@ -16,8 +16,27 @@ const directory = settings.get().advanced.log_directory.replace('%TIMESTAMP%', t
// Make sure that log directoy exsists
fx.mkdirSync(directory);
// Custom level
const levels = {
levels: {
error: 0,
warn: 1,
info: 2,
debug: 3,
trace: 4,
},
colors: {
error: 'red',
warn: 'yellow',
info: 'green',
debug: 'blue',
trace: 'magenta',
},
};
// Create logger
const logger = new winston.Logger({
levels: levels.levels,
transports: [
new winston.transports.File({
filename: path.join(directory, 'log.txt'),
@ -37,6 +56,9 @@ const logger = new winston.Logger({
],
});
// Add colors
winston.addColors(levels.colors);
logger.info(`Logging to directory: '${directory}'`);
logger.transports.console.level = level;

View File

@ -1,6 +1,7 @@
const maxSimultaneouslyRunning = 5;
const delay = 250;
const error17Retries = 3;
const logger = require('./logger');
class ZigbeeQueue {
constructor() {
@ -8,6 +9,7 @@ class ZigbeeQueue {
this.active = [];
this.timer = null;
this.running = false;
this.ID = 0;
}
start() {
@ -16,7 +18,13 @@ class ZigbeeQueue {
}
push(entityID, func) {
this.queue.push({entityID, func, attempts: 0});
this.ID++;
this.queue.push({entityID, func, attempts: 0, ID: this.ID});
this.log(`Added new job with ID ${this.ID} for ${entityID}`);
}
log(message) {
logger.trace(`zigbeeQueue: ${message}`);
}
stopTimer() {
@ -40,6 +48,8 @@ class ZigbeeQueue {
}
handleJobComplete(job, error) {
this.log(`Completed job with ID ${job.ID} for ${job.entityID}${error ? ` with error ${error}` : ''}`);
if (error && error.message === 'rsp error: 17' && job.attempts < error17Retries) {
// Error 17 means that the buffer of the ZNP was full,
// retry this for a maximum of 3 times.
@ -60,6 +70,7 @@ class ZigbeeQueue {
if (next) {
this.active.push(next);
this.log(`Executing job with ID ${next.ID} for ${next.entityID}`);
next.func((error) => this.handleJobComplete(next, error));
}
}