Skip to content

Commit 4f8cd77

Browse files
authored
Merge pull request #13 from hexawulf/codex/fix-winston-logging-after-esbuild-bundling
Fix Winston logs after esbuild
2 parents 4fc201d + 92b1ce6 commit 4f8cd77

4 files changed

Lines changed: 25 additions & 3 deletions

File tree

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,16 @@ For local development, you'll need Node.js 18+ and PostgreSQL. See detailed setu
189189

190190
- `npm run dev` - Start development server
191191
- `npm run build` - Build for production
192+
- `npm run test:logger` - Verify Winston file logging in `dist`
192193
- `npm run db:push` - Push schema changes to database
193194
- `npm run db:studio` - Open Drizzle Studio to manage database
194195

196+
### Quick Logger Test
197+
198+
After running `npm run build`, execute `npm run test:logger` to verify that
199+
`/home/zk/logs/codepatchwork.log` is created. The test script writes a few
200+
messages using the bundled logger to ensure file logging works in production.
201+
195202
## 📝 License
196203

197204
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"sideEffects": ["./server/logger.ts"],
77
"scripts": {
88
"dev": "NODE_ENV=development tsx server/index.ts",
9-
"build": "vite build && esbuild server/index.ts --platform=node --packages=external --bundle --format=esm --outdir=dist",
9+
"build": "vite build && esbuild server/index.ts server/winston-test.ts --platform=node --packages=external --bundle --format=esm --outdir=dist",
10+
"test:logger": "node dist/winston-test.js",
1011
"start": "NODE_ENV=production node -r dotenv/config dist/index.js",
1112
"check": "tsc",
1213
"db:push": "drizzle-kit push"

server/logger.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@ if (!fs.existsSync(logDir)) {
1414
}
1515
}
1616

17+
const fileTransport = new transports.File({ filename: logFile });
18+
19+
fileTransport.on('error', err => {
20+
console.error('⚠️ File transport error:', err.message);
21+
try {
22+
fs.appendFileSync(
23+
path.join(logDir, 'fallback.log'),
24+
`[${new Date().toISOString()}] Logger failed: ${err.message}\n`
25+
);
26+
} catch (appendErr) {
27+
console.error('⚠️ Fallback logging failed:', (appendErr as Error).message);
28+
}
29+
});
30+
1731
const logger = createLogger({
1832
level: 'info',
1933
format: format.combine(
@@ -25,7 +39,7 @@ const logger = createLogger({
2539
),
2640
transports: [
2741
new transports.Console(),
28-
new transports.File({ filename: logFile })
42+
fileTransport
2943
]
3044
});
3145

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// winston-test.js
1+
// winston-test.ts
22
import logger from './logger';
33

44
logger.info("✅ Winston basic test: info level");

0 commit comments

Comments
 (0)