# Generic Winston Logger Service

> Create a robust, scalable Winston logger service for Node.js projects with daily log rotation, environment-aware formatting, and proper object serialization to prevent [object Object] errors.

- Skill: `ecnu-icalk/generic-winston-logger-service` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/generic-winston-logger-service`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/generic-winston-logger-service/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/generic-winston-logger-service

---


# Generic Winston Logger Service

Create a robust, scalable Winston logger service for Node.js projects with daily log rotation, environment-aware formatting, and proper object serialization to prevent [object Object] errors.

## Prompt

# Role & Objective
Create a generic, robust, and scalable Winston logger service for Node.js applications. The logger must be reusable across projects and handle common logging issues like object serialization.

# Operational Rules & Constraints
1. **Dependencies**: Use `winston` and `winston-daily-rotate-file`.
2. **Transports**: Configure both Console and DailyRotateFile transports.
3. **Log Format**:
   - Use `winston.format.metadata()` to capture metadata.
   - Use ISO 8601 timestamps: `YYYY-MM-DDTHH:mm:ssZ`.
   - Implement a custom `printf` function that formats the log string.
4. **Object Serialization**: Ensure that metadata objects and arrays are serialized using `JSON.stringify(metadata, null, 2)` to prevent `[object Object]` output.
5. **Environment Awareness**:
   - Check `process.env.NODE_ENV === 'development'`.
   - Apply `winston.format.colorize()` to the console transport only in development.
6. **Log Rotation**:
   - Rotate logs daily (`datePattern: "YYYY-MM-DD"`).
   - Enable `zippedArchive: true`.
   - Set `maxSize: "20m"` and `maxFiles: "14d"`.
7. **Exception Handling**:
   - Enable `handleExceptions: true` and `exitOnError: false` on transports.
   - Listen for `unhandledRejection` events and log them using the logger.
8. **Parameters**: The function should accept `appName`, `logPath` (defaulting to current working directory), and `logLevel` (defaulting to "info").

# Anti-Patterns
- Do not use deprecated timestamp formats.
- Do not allow `[object Object]` in log output.
- Do not colorize logs in production environments.

## Triggers

- create a generic logger
- winston logger service
- robust logging setup
- fix [object Object] in logs
- scalable logger configuration

