Skip to content

Commit

Permalink
feat: export logs to filesystem in our pino logger
Browse files Browse the repository at this point in the history
  • Loading branch information
espimarisa committed Feb 17, 2024
1 parent 61edecc commit c59bd4a
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 14 deletions.
Binary file modified bun.lockb
Binary file not shown.
2 changes: 2 additions & 0 deletions packages/bot/src/classes/Client.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { HibikiCommand } from "$classes/Command.ts";
import type { HibikiEvent } from "$classes/Event.ts";
// eslint-disable-next-line import/order
import { loadCommands, loadEvents, registerInteractions } from "$utils/loader.ts";
import env from "$shared/env.ts";
import logger from "$shared/logger.ts";
Expand Down Expand Up @@ -50,3 +51,4 @@ export class HibikiClient extends Client {
}
}
}
//
2 changes: 1 addition & 1 deletion packages/bot/src/classes/Sharder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export class HibikiShardingManager {
this.shardingManager = new ShardingManager(this._mainFile, {
token: this._token,
totalShards: this._shardCount,
mode: env.isProduction ? "worker" : "process",
mode: env.NODE_ENV === "production" ? "worker" : "process",
execArgv: process.execArgv,
respawn: false,
});
Expand Down
1 change: 1 addition & 0 deletions packages/shared/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"test": "bun run lint"
},
"dependencies": {
"@chatsift/pino-rotate-file": "^0.3.0",
"dotenv": "^16.4.4",
"envalid": "^8.0.0",
"i18next": "^23.8.2",
Expand Down
64 changes: 51 additions & 13 deletions packages/shared/src/logger.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,56 @@
import { pino } from "pino";
import type { PinoRotateFileOptions } from "@chatsift/pino-rotate-file";
import type { PrettyOptions } from "pino-pretty";
import env from "$shared/env.ts";
import createLogger, { multistream, transport } from "pino";
import path from "node:path";

// Options for the pino logger
// TODO: Implement FS logs
const pinoOptions: pino.LoggerOptions = {
transport: {
target: "pino-pretty",
options: {
translateTime: "yyyy-mm-dd HH:MM:ss",
colorize: true,
},
// __dirname replacement in ESM
const pathDirname = path.dirname(Bun.fileURLToPath(new URL(import.meta.url)));

// Directories to crawl
const LOGS_DIRECTORY = path.join(pathDirname, "../../../logs");

// Pino-pretty options
const pinoPrettyOptions = {
levelFirst: true,
translateTime: "yyyy-mm-dd HH:MM:ss",
colorize: true,
} satisfies PrettyOptions;

// Pino rotation options
const pinoRotateFileOptions = {
dir: LOGS_DIRECTORY,
mkdir: true,
maxAgeDays: 14,
prettyOptions: {
...pinoPrettyOptions,
// Disable colorization for fs log files
colorize: false,
},
};
} satisfies PinoRotateFileOptions;

// Creates the new Pino logger
const logger = pino(Bun.env["isProduction"] ? {} : pinoOptions);
const logger = createLogger(
{
// Sets name to package name
name: env.npm_package_name || undefined,
level: "trace",
},
multistream([
{
level: "trace",
stream: transport({
target: "pino-pretty",
options: pinoPrettyOptions,
}),
},
{
level: "trace",
stream: transport({
target: "@chatsift/pino-rotate-file",
options: pinoRotateFileOptions,
}),
},
]),
);

export default logger;

0 comments on commit c59bd4a

Please sign in to comment.