🛠️ Apply identical Biome configuration from frontend to relay service 🧹 Ensure consistent code formatting and quality standards across components 📝 Maintain unified development experience throughout the project
75 lines
2 KiB
TypeScript
75 lines
2 KiB
TypeScript
import * as colors from 'jsr:@std/fmt@^1.0.4/colors';
|
|
import * as log from 'jsr:@std/log';
|
|
import { getEveFilePath } from './files.ts';
|
|
export * as log from 'jsr:@std/log';
|
|
|
|
export async function setupLogger() {
|
|
const formatLevel = (level: number): string => {
|
|
return (
|
|
{
|
|
10: colors.gray('[DEBUG]'),
|
|
20: colors.green('[INFO] '),
|
|
30: colors.yellow('[WARN] '),
|
|
40: colors.red('[ERROR]'),
|
|
50: colors.bgRed('[FATAL]'),
|
|
}[level] || `[LVL${level}]`
|
|
);
|
|
};
|
|
|
|
const levelName = (level: number): string => {
|
|
return (
|
|
{
|
|
10: 'DEBUG',
|
|
20: 'INFO',
|
|
30: 'WARN',
|
|
40: 'ERROR',
|
|
50: 'FATAL',
|
|
}[level] || `LVL${level}`
|
|
);
|
|
};
|
|
|
|
const formatArg = (arg: unknown): string => {
|
|
if (typeof arg === 'object') return JSON.stringify(arg);
|
|
return String(arg);
|
|
};
|
|
|
|
await log.setup({
|
|
handlers: {
|
|
console: new log.ConsoleHandler('DEBUG', {
|
|
useColors: true,
|
|
formatter: (record) => {
|
|
const timestamp = new Date().toISOString();
|
|
let msg = `${colors.dim(`[${timestamp}]`)} ${formatLevel(record.level)} ${record.msg}`;
|
|
|
|
if (record.args.length > 0) {
|
|
const args = record.args
|
|
.map((arg, i) => `${colors.dim(`arg${i}:`)} ${formatArg(arg)}`)
|
|
.join(' ');
|
|
msg += ` ${colors.dim('|')} ${args}`;
|
|
}
|
|
|
|
return msg;
|
|
},
|
|
}),
|
|
file: new log.FileHandler('DEBUG', {
|
|
filename:
|
|
Deno.env.get('LOG_FILE') || (await getEveFilePath('eve-logs.jsonl')),
|
|
formatter: (record) => {
|
|
const timestamp = new Date().toISOString();
|
|
return JSON.stringify({
|
|
timestamp,
|
|
level: levelName(record.level),
|
|
msg: record.msg,
|
|
args: record.args,
|
|
});
|
|
},
|
|
}),
|
|
},
|
|
loggers: {
|
|
default: {
|
|
level: 'DEBUG',
|
|
handlers: ['console', 'file'],
|
|
},
|
|
},
|
|
});
|
|
}
|