@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
JavaScript
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;
;