Source: reporter/cache_logger.js

import { Logger } from './logger.js';
import { Reporter } from './reporter.js';

/** Default logger that logs to console */
class CacheLogger extends Logger {

    /**
     * @param {SyslogLevel} fromLevel
     * @param {Reporter} reporter
     * @param {number} cacheSize
     */

    constructor(fromLevel, reporter, cacheSize) {

        super(fromLevel, reporter);


        /** @type {number} */

        this.cacheSize = cacheSize;


        /**
         * Logging for stats etc
         * @protected
         * @type {Reporter}
         */
        
        this._reporter = reporter;


        /**
         * @param {Object} log
         * @param {string} log.msg
         * @param {SyslogLevel} [log.level]
         */

        this.report = ({ msg, level = 'debug' }) =>
            reporter.report({ msg, level, source: 'CacheLogger' });


        this.report({ msg: 'Initiated' });
    }


    /** @type {Array<LogObject>} */

    cache = [];
    

    log(log) {
        this.cache = [ log, ...this.cache.slice(0,this.cacheSize - 1) ]
    }
}

export { CacheLogger }