UNPKG

dnsweeper

Version:

Advanced CLI tool for DNS record risk analysis and cleanup. Features CSV import for Cloudflare/Route53, automated risk assessment, and parallel DNS validation.

89 lines (79 loc) 1.97 kB
/** * Logger Utility */ import winston from 'winston'; // ログレベルの定義 const levels = { error: 0, warn: 1, info: 2, http: 3, debug: 4, }; // ログレベルに対応する色 const colors = { error: 'red', warn: 'yellow', info: 'green', http: 'magenta', debug: 'white', }; winston.addColors(colors); // ログフォーマットの定義 const format = winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }), winston.format.colorize({ all: true }), winston.format.printf( (info) => `${info.timestamp} ${info.level}: ${info.message}`, ), ); // ファイル用フォーマット(色なし) const fileFormat = winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }), winston.format.errors({ stack: true }), winston.format.json(), ); // トランスポート設定 const transports = [ // コンソール出力 new winston.transports.Console({ format, level: process.env.NODE_ENV === 'production' ? 'info' : 'debug', }), ]; // 本番環境ではファイルログも追加 if (process.env.NODE_ENV === 'production') { transports.push( // エラーログファイル new winston.transports.File({ filename: 'logs/error.log', level: 'error', format: fileFormat, maxsize: 5242880, // 5MB maxFiles: 5, }), // 結合ログファイル new winston.transports.File({ filename: 'logs/combined.log', format: fileFormat, maxsize: 5242880, // 5MB maxFiles: 5, }) ); } // ロガーの作成 export const logger = winston.createLogger({ level: process.env.NODE_ENV === 'production' ? 'info' : 'debug', levels, format: fileFormat, transports, exitOnError: false, }); // ログディレクトリの作成 if (process.env.NODE_ENV === 'production') { import('fs').then(fs => { if (!fs.existsSync('logs')) { fs.mkdirSync('logs'); } }); }