logger.ts•991 B
import winston from 'winston';
import path from 'path';
import { fileURLToPath } from 'url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
// Create logger instance
export const logger = winston.createLogger({
level: process.env.LOG_LEVEL || 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.errors({ stack: true }),
winston.format.json()
),
defaultMeta: { service: 'obsidian-mcp' },
transports: [
// Write to stderr for MCP communication (stdout is reserved for MCP protocol)
new winston.transports.Console({
stderrLevels: ['error', 'warn', 'info', 'debug'],
format: winston.format.combine(
winston.format.colorize(),
winston.format.simple()
),
}),
],
});
// Only add file transport if LOG_FILE is set
if (process.env.LOG_FILE) {
logger.add(
new winston.transports.File({
filename: process.env.LOG_FILE,
format: winston.format.json(),
})
);
}