refactor: deduplicate logger into shared module (#39)

three files created identical pino logger instances with the same config.
extract into src/logger.ts and import from each consumer.

net -9 lines, no behavior change.

Co-authored-by: ejae <ejae_dev@ejaes-Mac-mini.home>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Ejae-dev
2026-02-03 23:40:58 +01:00
committed by GitHub
parent 392ba6262c
commit 117980175e
4 changed files with 9 additions and 18 deletions

View File

@@ -6,7 +6,6 @@ import { spawn } from 'child_process';
import fs from 'fs'; import fs from 'fs';
import os from 'os'; import os from 'os';
import path from 'path'; import path from 'path';
import pino from 'pino';
import { import {
CONTAINER_IMAGE, CONTAINER_IMAGE,
@@ -15,14 +14,10 @@ import {
DATA_DIR, DATA_DIR,
GROUPS_DIR, GROUPS_DIR,
} from './config.js'; } from './config.js';
import { logger } from './logger.js';
import { validateAdditionalMounts } from './mount-security.js'; import { validateAdditionalMounts } from './mount-security.js';
import { RegisteredGroup } from './types.js'; import { RegisteredGroup } from './types.js';
const logger = pino({
level: process.env.LOG_LEVEL || 'info',
transport: { target: 'pino-pretty', options: { colorize: true } },
});
// Sentinel markers for robust output parsing (must match agent-runner) // Sentinel markers for robust output parsing (must match agent-runner)
const OUTPUT_START_MARKER = '---NANOCLAW_OUTPUT_START---'; const OUTPUT_START_MARKER = '---NANOCLAW_OUTPUT_START---';
const OUTPUT_END_MARKER = '---NANOCLAW_OUTPUT_END---'; const OUTPUT_END_MARKER = '---NANOCLAW_OUTPUT_END---';

View File

@@ -1,7 +1,6 @@
import { exec, execSync } from 'child_process'; import { exec, execSync } from 'child_process';
import fs from 'fs'; import fs from 'fs';
import path from 'path'; import path from 'path';
import pino from 'pino';
import makeWASocket, { import makeWASocket, {
DisconnectReason, DisconnectReason,
@@ -42,14 +41,10 @@ import {
import { startSchedulerLoop } from './task-scheduler.js'; import { startSchedulerLoop } from './task-scheduler.js';
import { NewMessage, RegisteredGroup, Session } from './types.js'; import { NewMessage, RegisteredGroup, Session } from './types.js';
import { loadJson, saveJson } from './utils.js'; import { loadJson, saveJson } from './utils.js';
import { logger } from './logger.js';
const GROUP_SYNC_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours const GROUP_SYNC_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
const logger = pino({
level: process.env.LOG_LEVEL || 'info',
transport: { target: 'pino-pretty', options: { colorize: true } },
});
let sock: WASocket; let sock: WASocket;
let lastTimestamp = ''; let lastTimestamp = '';
let sessions: Session = {}; let sessions: Session = {};

6
src/logger.ts Normal file
View File

@@ -0,0 +1,6 @@
import pino from 'pino';
export const logger = pino({
level: process.env.LOG_LEVEL || 'info',
transport: { target: 'pino-pretty', options: { colorize: true } },
});

View File

@@ -1,7 +1,6 @@
import { CronExpressionParser } from 'cron-parser'; import { CronExpressionParser } from 'cron-parser';
import fs from 'fs'; import fs from 'fs';
import path from 'path'; import path from 'path';
import pino from 'pino';
import { import {
DATA_DIR, DATA_DIR,
@@ -18,13 +17,9 @@ import {
logTaskRun, logTaskRun,
updateTaskAfterRun, updateTaskAfterRun,
} from './db.js'; } from './db.js';
import { logger } from './logger.js';
import { RegisteredGroup, ScheduledTask } from './types.js'; import { RegisteredGroup, ScheduledTask } from './types.js';
const logger = pino({
level: process.env.LOG_LEVEL || 'info',
transport: { target: 'pino-pretty', options: { colorize: true } },
});
export interface SchedulerDependencies { export interface SchedulerDependencies {
sendMessage: (jid: string, text: string) => Promise<void>; sendMessage: (jid: string, text: string) => Promise<void>;
registeredGroups: () => Record<string, RegisteredGroup>; registeredGroups: () => Record<string, RegisteredGroup>;