@bitrix24/b24jssdk
Version:
Bitrix24 REST API JavaScript SDK
74 lines (71 loc) • 1.96 kB
JavaScript
/**
* @package @bitrix24/b24jssdk
* @version 1.0.3
* @copyright (c) 2026 Bitrix24
* @license MIT
* @see https://github.com/bitrix24/b24jssdk
* @see https://bitrix24.github.io/b24jssdk/
*/
import { LogLevel } from '../../types/logger.mjs';
import { AbstractHandler } from './abstract-handler.mjs';
import { LineFormatter } from '../formatter/line-formatter.mjs';
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
class StreamHandler extends 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 = LogLevel.DEBUG, options) {
const opts = {
bubble: true,
...options
};
super(level, opts.bubble);
this.stream = opts.stream;
this.setFormatter(new 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();
});
});
}
}
}
export { StreamHandler };
//# sourceMappingURL=stream-handler.mjs.map