'use strict';
/**
* @author schukai GmbH
*/
import {Monster} from '../namespace.js';
import {Base} from '../types/base.js';
import {ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN} from "./logger.js";
import {LogEntry} from "./logentry.js";
import {validateInstance, validateInteger} from "../types/validate.js";
/**
* you can call the method via the monster namespace `new Monster.Logging.Handler()`.
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.6.0/dist/modules/logging/handler.js';
* console.log(new Monster.Logging.Handler())
* </script>
* ```
*
* Alternatively, you can also integrate this function individually.
*
* ```
* <script type="module">
* import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.6.0/dist/modules/logging/handler.js';
* console.log(new Handler())
* </script>
* ```
*
* @since 1.5.0
* @copyright schukai GmbH
* @memberOf Monster/Logging
*/
class Handler extends Base {
constructor() {
super();
/**
* Loglevel
*
* @type {integer}
*/
this.loglevel = OFF;
}
/**
* this is the central log function. this method must be
* overwritten by derived handlers with their own logic.
*
* ALL > TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF (ALL = 0xff;OFF = 0x00;
*
* @param {LogEntry} entry
* @returns {boolean}
*/
log(entry) {
validateInstance(entry, LogEntry);
if (this.loglevel < entry.getLogLevel()) {
return false;
}
return true;
}
/**
* set loglevel
*
* @param {integer} loglevel
* @returns {Handler}
* @since 1.5.0
*/
setLogLevel(loglevel) {
validateInteger(loglevel)
this.loglevel = loglevel;
return this;
}
/**
* get loglevel
*
* @returns {integer}
* @since 1.5.0
*/
getLogLevel() {
return this.loglevel;
}
/**
* Set log level to All
*
* @returns {Handler}
* @since 1.5.0
*/
setAll() {
this.setLogLevel(ALL);
return this;
};
/**
* Set log level to Trace
*
* @returns {Handler}
* @since 1.5.0
*/
setTrace() {
this.setLogLevel(TRACE);
return this;
};
/**
* Set log level to Debug
*
* @returns {Handler}
* @since 1.5.0
*/
setDebug() {
this.setLogLevel(DEBUG);
return this;
};
/**
* Set log level to Info
*
* @returns {Handler}
* @since 1.5.0
*/
setInfo() {
this.setLogLevel(INFO);
return this;
};
/**
* Set log level to Warn
*
* @returns {undefined}
* @since 1.5.0
*/
setWarn() {
this.setLogLevel(WARN);
return this;
};
/**
* Set log level to Error
*
* @returns {Handler}
* @since 1.5.0
*/
setError() {
this.setLogLevel(ERROR);
return this;
};
/**
* Set log level to Fatal
*
* @returns {Handler}
* @since 1.5.0
*/
setFatal() {
this.setLogLevel(FATAL);
return this;
};
/**
* Set log level to Off
*
* @returns {Handler}
* @since 1.5.0
*/
setOff() {
this.setLogLevel(OFF);
return this;
};
}
Monster.assignToNamespace('Monster.Logging', Handler);
export {Monster, Handler};