UNPKG

@shadow-dev/core

Version:

A modular core framework for Discord bot development, providing commands, buttons, menus, middleware, and more.

57 lines (56 loc) 1.73 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.LokiLogger = void 0; const axios_1 = __importDefault(require("axios")); class LokiLogger { constructor(config) { this.config = config; } async sendLog(entries, level) { const streams = [ { stream: { ...this.config.labels, level }, values: entries.map((entry) => [ (Date.now() * 1e6).toString(), entry.message, ]), }, ]; try { await axios_1.default.post(`${this.config.host}/loki/api/v1/push`, { streams }, { auth: this.config.username ? { username: this.config.username, password: this.config.password ?? '', } : undefined, }); } catch (err) { console.error("Failed to send log to Loki", err); } } async log(level, message) { const entry = { timestamp: parseInt(new Date().toISOString()), message: `[${level.toUpperCase()}] ${message}`, }; await this.sendLog([entry], level); } async info(message) { await this.log('info', message); } async error(message) { await this.log('error', message); } async warn(message) { await this.log('warn', message); } async debug(message) { await this.log('debug', message); } } exports.LokiLogger = LokiLogger;