๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๊ทธ๋™์•ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ log๋ฅผ ์ฐ์„ ๋•Œ System.out.println()์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

ํšŒ์‚ฌ์—์„œ ์ฒ˜์Œ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ๋„ log๋ฅผ ์ฐ๊ธฐ ์œ„ํ•ด System.out.println()์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ์ฝ”๋“œ๋ฆฌ๋ทฐ์—์„œ ๋ฐ”๋กœ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์™œ log๋ฅผ ์ฐ๊ธฐ ์œ„ํ•ด System.out.println()์€ ์ง€์–‘๋˜์–ด์•ผ ํ• ๊นŒ๋ฅผ ์ฃผ์ œ๋กœ ์ ๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

์™œ ํŽธํ•˜๊ฒŒ ํ‘œ์ค€์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•œ System.out.println() ๋ฉ”์†Œ๋“œ๋ฅผ ๋‘๊ณ  ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ์™œ System.out.println()์€ ์ง€์–‘ํ•ด์•ผํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?


System.out.println()์„ ์‚ฌ์šฉํ•  ๋•Œ์˜ ๋ฌธ์ œ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. ํœ˜๋ฐœ๋œ๋‹ค.

2. ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œํ•œ์˜ ์ •๋ณด๊ฐ€ ๋‚จ์ง€ ์•Š๋Š”๋‹ค.

3. ๋กœ๊ทธ ์ถœ๋ ฅ ๋ ˆ๋ฒจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

4. ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์›์ธ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

 

 

1. ํœ˜๋ฐœ๋œ๋‹ค.

System.out.println()์€ ๋กœ๊ทธ๊ฐ€ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค. ์ฆ‰, ํŒŒ์ผ๋กœ ์ €์žฅ๋˜์ง€ ์•Š๊ณ  ํœ˜๋ฐœ๋œ๋‹ค.

=> ๋กœ๊ทธ๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ƒํ™ฉ์„ ๊ธฐ๋กํ•˜๊ณ , ์ถ”ํ›„ ํ™•์ธํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜์—ฌ ๊ณ ์น˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

๋•Œ๋ฌธ์— ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ํ•œ ๋ฒˆ ์ถœ๋ ฅ๋˜๊ณ  ์–ด๋””์—๋„ ์ €์žฅ๋˜์ง€ ์•Š์œผ๋ฉด ๋กœ๊ทธ์˜ ์ œ ์—ญํ• ์„ ํ•  ์ˆ˜ ์—†๋‹ค.

"๋กœ๊ทธ๋œ ๋ฐ์ดํ„ฐ๋Š” ์‹ค์ œ๋กœ ๊ธฐ๋ก๋˜์–ด์•ผ ํ•˜์ง€๋งŒ, System.out.println()์€ ๊ธฐ๋ก๋˜์ง€ ์•Š๊ณ  ํœ˜๋ฐœ๋œ๋‹ค."

 

2. ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œํ•œ์˜ ์ •๋ณด๊ฐ€ ๋‚จ์ง€ ์•Š๋Š”๋‹ค.

System.out.println()์€ ์ธ์ž๋กœ ์ „๋‹ฌํ•œ ๋ฌธ์ž์—ด๋งŒ์„ ์ถœ๋ ฅํ•œ๋‹ค.

๋•Œ๋ฌธ์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ์ •๋ณด์ธ ๋ฌธ์ œ๋ฐœ์ƒ์ผ, ์‹œ๊ฐ, ์ˆ˜์ค€, ๋ฐœ์ƒ์œ„์น˜์— ๋Œ€ํ•ด์„œ๋Š” ๊ธฐ๋ก๋˜์ง€ ์•Š๋Š”๋‹ค.

=> ๋ฌผ๋ก  ์ด๋Ÿฐ ์ •๋ณด๋„ ์ธ์ž๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งค๋ฒˆ ๊ทธ๋Ÿฐ ์ •๋ณด๋ฅผ ์ผ์ผ์ด ๋‚จ๊ธฐ๊ธฐ์—๋Š” ๋ฒˆ๊ฑฐ๋กญ๋‹ค.

 

3. ๋กœ๊ทธ ์ถœ๋ ฅ ๋ ˆ๋ฒจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

๋กœ์ปฌ์—์„œ ๊ฐœ๋ฐœํ•  ๋•Œ์—๋Š” ๋””๋ฒ„๊น…์„ ์œ„ํ•œ ์ƒ์„ธํ•œ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ๋˜์–ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์ƒ์šฉ์—์„œ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋งŒ์„ ๋‚จ๊ฒจ์•ผ ํ•œ๋‹ค.

 

๊ฐœ๋ฐœ ์‹œ์—๋งŒ ์‚ฌ์šฉ๋˜๋Š” ์ •๋ณด์™€ ๋ฌธ์ œ ์ƒํ™ฉ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํ•จ๊ป˜ ๋กœ๊น…๋œ๋‹ค๋ฉด,

๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์ •์ž‘ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ํž˜๋“ค ๋ฟ๋”๋Ÿฌ,

๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋กœ๊ทธ๋กœ ๋‚จ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค.

๋˜ํ•œ ์˜๋ฏธ ์—†๋Š” ๋กœ๊ทธ๊ฐ€ ์Œ“์—ฌ ์„œ๋ฒ„ ์šฉ๋Ÿ‰์„ ์ฐจ์ง€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ๋กœ๊ทธ๊ฐ€ ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ๋„๋ก ๋กœ๊ทธ ์ถœ๋ ฅ ๋ ˆ๋ฒจ์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” Logback์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” TRACE, DEBUG, INFO, WARN, ERROR, FATAL์„ ์ œ๊ณตํ•œ๋‹ค.

ํ•˜์ง€๋งŒ System.out.println()์€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค. ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ๋“  ๋™์ผํ•œ ๋กœ๊ทธ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

ํ”„๋กœ๋•์…˜์—์„œ ์ด๋Ÿฐ ๋กœ๊ทธ๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ์ผ์ผ์ด ์ œ๊ฑฐ, ์ฃผ์„, ๋ณ„๋„ ์กฐ๊ฑด๋ฌธ ๋“ฑ ๋ฒˆ๊ฑฐ๋กœ์šด ์ผ์„ ํ•ด์•ผํ•œ๋‹ค.

 

4. ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์›์ธ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

System.out.println()์˜ ๊ตฌํ˜„์„ ์‚ดํŽด๋ณด๋ฉด,

synchronized๊ฐ€ ๋ถ™์–ด์žˆ๋‹ค. => ๋™๊ธฐ์ด๋ฉฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์ง„ํ–‰๋˜๋Š” ๋ฐฉ์‹(์ง๋ ฌ)์ด๋‹ค.

์ด ๋•Œ newLine() ๋ฉ”์†Œ๋“œ๋Š” ์ž„๊ณ„์˜์—ญ(critical section)์ด ๋œ๋‹ค.

๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ A์“ฐ๋ ˆ๋“œ๊ฐ€ newLine() ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ๋ฉ”์†Œ๋“œ๋Š” ์ž ๊ธฐ๊ฒŒ ๋œ๋‹ค.

๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ๋Š” A์“ฐ๋ ˆ๋“œ๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๊ณ  ์ž ๊ธˆ์„ ํ’€์–ด์ค€ ๋’ค์—์„œ์•ผ newLine()๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

(์—ฌ๋Ÿฌ ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” System.out.println()์ด 1๊ฐœ ๋ฐ–์— ์—†๋Š” ๊ฒƒ์ž„.)

 

Spring์„ ์‹คํ–‰ํ•˜๋Š” Tomcat์€ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ๋กœ ๋™์ž‘ํ•œ๋‹ค.

์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์“ฐ๋ ˆ๋“œ ํ’€์—์„œ ์“ฐ๋ ˆ๋“œ๋ฅผ ํ•˜๋‚˜ ๊ฐ€์ ธ์™€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

System.out.println()์„ ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋งŒํผ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์ฒ˜๋ฆฌ๊ฐ€ ๋Š๋ ค์ง„๋‹ค.

 

๋”ฐ๋ผ์„œ ์‹ค์ œ ์ƒ์šฉ์—์„œ ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ์—์„œ๋Š” System.out.println()์„ ์ ˆ๋Œ€ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.