Winston: ๋‚ ์งœ๋ณ„๋กœ ๋กœ๊ทธ๋ฅผ ๋ถ„ํ• ํ•˜๋Š” ํŒŒ์ผ ์ „์†ก ๊ธฐ๋Šฅ ์ถ”๊ฐ€

์— ๋งŒ๋“  2011๋…„ 05์›” 29์ผ  ยท  12์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: winstonjs/winston

@indexzero -

๋‚ ์งœ๋ณ„๋กœ ๋กœ๊ทธ ํŒŒ์ผ์„ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ๋„๋ก ํŒŒ์ผ ์ „์†ก์— ์„ ํƒ์  API ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ์•„์ด๋””์–ด๋Š” ์ƒˆ๋กœ์šด ๋‚ ๋งˆ๋‹ค ์ƒˆ ๋กœ๊ทธ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๊ณ  Winston์ด ์ด ๋ชจ๋“  ๊ฒƒ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‚ ์งœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธฐ๋กํ•  ๋กœ๊ทธ ํŒŒ์ผ์„ ์•„๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

feature request

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ์ž‘์—…์„ ์œ„ํ•œ ํ‘œ์ค€ ๋„๊ตฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ winston ์ฝ”๋“œ๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Logrotate (http://linuxcommand.org/man_pages/logrotate8.html)

๋ชจ๋“  12 ๋Œ“๊ธ€

์ด์— ๋Œ€ํ•œ ํŒจ์น˜ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค.

๋ฉ‹์žˆ๋Š”! API์— ๋Œ€ํ•œ ์ œ์•ˆ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

           // Specify path option and default to spanning by day ( 24 hours in each file )
           new (winston.transports.File)({ path: './logs' })

๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž ์ง€์ • ๋‚ ์งœ/์‹œ๊ฐ„ ํ•„ํ„ฐ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๋ฐ ์•ฝ๊ฐ„์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ์œ„ํ•œ ํ‘œ์ค€ ๋„๊ตฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ winston ์ฝ”๋“œ๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Logrotate (http://linuxcommand.org/man_pages/logrotate8.html)

@indexzero ์ด์— ๋Œ€ํ•œ ํŒจ์น˜๊ฐ€ ์—ฌ์ „ํžˆ ํ—ˆ์šฉ๋ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ด๊ฒƒ์ด ํŒŒ์ผ ์ด๋ฆ„ ์˜ต์…˜์„ ํ†ตํ•ด ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ ํšŒ์ „์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ณ„ ๋ฐ๋ชฌ์˜ ์ž‘์—…์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด @cemuzunlar๊ฐ€ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ logrotate์™€ ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

@cemuzunlar @Dieterbe

์ด์ƒ์ ์œผ๋กœ๋Š” ์ด๊ฒƒ์ด ์œˆ์Šคํ„ด์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ

  • winston์€ ๋‹ค์–‘ํ•œ ๋ธ”๋กœ๊ทธ(๊ทธ๋ฆฌ๊ณ  cygwin + ์ž์ฒด ์ปดํŒŒ์ผ๋œ logrotate๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ)์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€(์•ฝํ•ด ๋ณด์ด๋Š”) ๊ฐ„๋‹จํ•œ ์‹œ๋„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  logrotate๊ฐ€ ์—†๋Š” Windows์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. winston์€ ์“ฐ๊ธฐ ์œ„ํ•ด ํŒŒ์ผ์„ ์—ด์–ด ๋‘๋ฏ€๋กœ Windows์—์„œ ํ•ด๋‹น ํŒŒ์ผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์ด ์‹ฌ๊ฐํ•˜๊ฒŒ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  • winston์˜ ํŒŒ์ผ ์ „์†ก์€ ์ด๋ฏธ ๋กœ๊ทธ ํšŒ์ „์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๋‚ ์งœ๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ ํฌ๊ธฐ๋กœ๋งŒ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์˜ค๋ž˜๋œ ํŒŒ์ผ๋„ ์‚ญ์ œํ•˜๋ฏ€๋กœ ๊ธฐ๋ณธ ๋กœ๊ทธ ํšŒ์ „ ๊ธฐ๋Šฅ์˜ ์ „๋ถ€์ž…๋‹ˆ๋‹ค.

์•Œ ๊ฒ ์–ด์š”...
ํฐ ์†Œ๋ฆฌ๋กœ ์ƒ๊ฐํ•˜๊ธฐ: ๋กœ๊ทธ ํšŒ์ „ ๋…ผ๋ฆฌ๋ฅผ ๋ณ„๋„์˜ ๋…ธ๋“œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ์ž‘๋™ํ•˜๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ„๋‹จํ•œ logrotate ๋ณต์ œ์ž…๋‹ˆ๋‹ค.

++1

๋‚˜๋Š” ๋˜ํ•œ logrotate์˜ ์˜นํ˜ธ์ž์ด์ง€๋งŒ, ๊ทธ๊ฒƒ์€ ๋‹จ๋…์œผ๋กœ ์ผ์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Logrotate๋Š” ๋กœ๊ทธ๋ฅผ ํ”Œ๋Ÿฌ์‹œํ•˜๊ณ  ๋‹ซ์„ ์‹œ๊ฐ„์ž„์„ ํ”„๋กœ๊ทธ๋žจ์— ์•Œ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ์ „์†ก์—๋Š” _createStream.checkFile.createAndFlush ํ•จ์ˆ˜๊ฐ€ ์žˆ์–ด ์–ธ๋œป ๋ณด๊ธฐ์—๋Š” ์ ์ ˆํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ logrotate์— ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋…ธ๋“œ ํ”„๋กœ๊ทธ๋žจ์ด SIGHUP์„ ํŠธ๋žฉํ•˜๊ณ  ์ด ๊ธฐ๋Šฅ์— ์•ก์„ธ์Šคํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค. ๊ทผ๋ฌด ์‹œ๊ฐ„ ์ „์— ์ฝ”๋“œ๋ฅผ ๊ฒŒ์‹œํ•  ์‹œ๊ฐ„์ด ์—†์ง€๋งŒ ์˜ค๋Š˜ ๋ฐค์— ์‹œ๋„ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ SIGHUP์— ์‘๋‹ตํ•˜๋Š” ๊ฒƒ์€ ์ฐฝ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ฐฝ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋กœ๊ทธ ํšŒ์ „(๋…ธ๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ๊ธฐํƒ€ ๋งˆ๋ฒ•)์€ ๋…์ž์—๊ฒŒ ์—ฐ์Šต ๋ฌธ์ œ๋กœ ๋‚จ๊ฒจ๋‘ก๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ด๊ฒƒ์„ ์ฐพ๋Š” ๊ฒฝ์šฐ:

@pccowboy๋‹˜, ์ข‹์€ ์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ €๋„ logrotate์˜ ์—ด๋ ฌํ•œ ์ง€์ง€์ž์ž…๋‹ˆ๋‹ค. node.js ์„œ๋น„์Šค(์˜ˆ: winston File maxsize ๋“ฑ)์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ์„œ๋น„์Šค(nginx, redis ๋“ฑ)์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ตฌ์„ฑ(logrotate)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊บผ๋ คํ•˜๋ฉฐ ๋ชจ๋“  ๋กœ๊ทธ ํŒŒ์ผ์— logrotate๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. HUP ์‹ ํ˜ธ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  postrotate ๋กœ๊ทธ ํŒŒ์ผ์„ ๋‹ค์‹œ ์—ฌ๋Š” ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐํšŒ๊ฐ€ ๋œ๋‹ค๋ฉด ๋” ๊น”๋”ํ•œ ๋ฐฉ์‹์œผ๋กœ(์ฆ‰, ํŒŒ์ผ ์ „์†ก์„ ์œ„ํ•œ ๊ตฌ์„ฑ ์˜ต์…˜์œผ๋กœ) ์ด๊ฒƒ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ  ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

https://gist.github.com/suprememoocow/5133080

#205์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—„์ฒญ๋‚œ!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰