@bitrix24/b24jssdk
Version:
Bitrix24 REST API JavaScript SDK
76 lines (72 loc) • 2.03 kB
JavaScript
/**
* @package @bitrix24/b24jssdk
* @version 2.0.0
* @copyright (c) 2026 Bitrix24
* @license MIT
* @see https://github.com/bitrix24/b24jssdk
* @see https://bitrix24.github.io/b24jssdk/
*/
;
const logger = require('../../types/logger.cjs');
const abstractHandler = require('./abstract-handler.cjs');
const lineFormatter = require('../formatter/line-formatter.cjs');
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
class StreamHandler extends abstractHandler.AbstractHandler {
static {
__name(this, "StreamHandler");
}
/**
* Stream for writing logs.
* @private
*/
stream;
/**
* Creates a StreamHandler instance.
*
* @param {LogLevel} level - Minimum log level.
* @param options
* - `stream: Writable` - Stream to write to (e.g., `process.stdout`, `process.stderr`, `fs.WriteStream`)
* - `bubble?: boolean` - Determines whether the handler should bubble the record to the next handler.
*/
constructor(level = logger.LogLevel.DEBUG, options) {
const opts = {
bubble: true,
...options
};
super(level, opts.bubble);
this.stream = opts.stream;
this.setFormatter(new lineFormatter.LineFormatter());
}
/**
* @inheritDoc
*/
async handle(record) {
try {
const formatter = this.getFormatter();
const message = formatter.format(record) + "\n";
this.stream.write(message);
} catch (error) {
console.error(`StreamHandler write error: ${error}`);
return false;
}
return true;
}
/**
* Closes the stream (if supported).
*
* @returns {Promise<void>}
*/
async close() {
if (typeof this.stream.end === "function") {
return new Promise((resolve, reject) => {
this.stream.end((error) => {
if (error) reject(error);
else resolve();
});
});
}
}
}
exports.StreamHandler = StreamHandler;
//# sourceMappingURL=stream-handler.cjs.map