UNPKG

domotz-remote-pawn

Version:

Domotz Agent

64 lines (59 loc) 2.51 kB
/** This file is part of Domotz Agent. * Copyright (C) 2021 Domotz Ltd * * Domotz Agent is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Domotz Agent is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Domotz Agent. If not, see <http://www.gnu.org/licenses/>. * * Set the level of a specific logger, in a non-persistent manner * Allowed levels are: 'silly', 'verbose', 'debug', 'info', 'warn', 'alert', 'error' * **/ var setLevel = function (message, resourceLocator) { var logger = resourceLocator.log.decorateLogs(); var durationS = parseInt(message.payload.duration_s, 10); if (!(durationS > 0)) { durationS = null; } return { execute: function (callback) { var loggerName = message.payload.logger; var newLevel = message.payload.level; var registry = require('../../utils/logging/registry').registry(); var previousLevel = registry.getLogger(loggerName)._assignedLevel; var logMessage = "%s - Setting log level to '%s' for logger '%s'"; if (durationS) { logMessage += ' for %s seconds'; } logger.info(logMessage, message.correlationId, newLevel, String(loggerName), durationS ? durationS : undefined); registry.setLevel(loggerName, newLevel); if (durationS) { setTimeout(function () { logger.info('%s - Resetting to previous value of %s', String(previousLevel), String(loggerName)); registry.setLevel(loggerName, previousLevel); }, durationS * 1000); } callback({}); }, describe: function () { return ( message.correlationId + ' - Set log level of logger `' + message.payload.logger + '` to level:' + message.payload.level + (durationS ? ' (' + String(durationS) + 's)' : '') ); }, }; }; module.exports.command = setLevel;