์•ˆ๋…•ํ•˜์„ธ์š”? ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Node.js Runtime ์•ฑ ๊ฐœ๋ฐœ ์‹œ ํ•„์š”ํ•œ ๋””๋ฒ„๊น…์„ ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋””๋ฒ„๊น…์€ ๊ฐœ๋ฐœ ์‹œ ํ”ผํ•  ์ˆ˜ ์—†๋Š” ์‚ฌํ•ญ์œผ๋กœ ๊ฐœ๋ฐœ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋‹ค์–‘ํ•œ ์กฐ๊ฑด๋ฅผ ํ™•์ธํ•˜๊ณ  ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ๋ช…ํ™•ํ•œ ์›์ธ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ฐฉ๋ฒ•์ค‘ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ด์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๋ฐฐ์šธ ๋•Œ Hello World๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‰ฌ์šฐ๋ฉด์„œ๋„ ์ฝ”๋“œ ์ค‘๊ฐ„ ์ค‘๊ฐ„์— ํ™•์ธํ•˜๊ณ ์ž ํ•˜๋Š” ๋‚ด์šฉ์„ ๋„ฃ์€ ํ›„ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์ถœ๋ ฅ๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•˜๋ฉด์„œ ์˜ค๋ฅ˜๋ฅผ ์žก์•„๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๋””๋ฒ„๊น… ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

Node.js์˜ ๋ฉ”์‹œ์ง€ ํ•จ์ˆ˜

Node.js๋Š” JavaScript ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Runtime ํ™˜๊ฒฝ์œผ๋กœ์„œ Web Browser์—์„œ์˜ JavaScript์—์„œ์™€ ๊ฐ™์ด ํ‘œ์ค€ ์ถœ๋ ฅ, ํ‘œ์ค€ ์—๋Ÿฌ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก console ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • console.assert(value[, message][, …args])

assert ํ•จ์ˆ˜๋Š” ํŠน์ • ์กฐ๊ฑด์ด ๋งž์ง€ ์•Š๋Š” ๊ฒฝ์šฐ AssertError๋ฅผ ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด ๋•Œ ์ •ํ•ด์ง„ ํ˜•์‹์˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Error๊ฐ€ ์ƒ์„ฑ๋˜ํ•˜๋ฏ€๋กœ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ try-catch๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์•ฑ์ด ์ข…๋ฃŒ๋˜๋ฉฐ ํ‘œ์ค€ ์˜ค๋ฅ˜๋กœ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

console.assert(false, 'Whoops %s', 'didn\'t work');
  • console.dir(obj[, options])

์ž…๋ ฅ ๋ฐ›์€ object์— ๋Œ€ํ•ด util.inspect()๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

var obj = {'key':'value'};
console.assert(obj);
  • console.error([data][, …args])

์ž…๋ ฅ ๋ฐ›์€ ๋ฉ”์‹œ์ง€๋ฅผ new line ๋ฌธ์ž์™€ ํ•จ๊ป˜ ํ‘œ์ค€ ์˜ค๋ฅ˜๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

const code = 5;
console.error('error #%d', code);
  • console.info([data][, …args])

์ž…๋ ฅ ๋ฐ›์€ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ๋‚ด๋ณด๋‚ด๋Š” console.log์™€ ๋™์ผํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

  • console.log([data][, …args])

์ž…๋ ฅ ๋ฐ›์€ ๋ฉ”์‹œ์ง€๋ฅผ new line ๋ฌธ์ž์™€ ํ•จ๊ป˜ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

const code = 5;
console.log('error #%d', code);
  • console.time(label)

time ํ•จ์ˆ˜๋Š” timeEnd ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ํŠน์ • ๊ธฐ๋Šฅ์ด๋‚˜ ๋™์ž‘์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. time ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๋Š” ๋ผ๋ฒจ ๊ฐ’์„ ID๋กœ ํ•ด์„œ ํŠน์ •ํ•˜๊ณ ์ž ํ•˜๋Š” ์‹œ์ž‘ ์ง€์ ์—์„œ ํ˜ธ์ถœํ•˜๋ฉด ํƒ€์ด๋จธ๊ฐ€ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  • console.timeEnd(label)

timeEnd ํ•จ์ˆ˜๋Š” time ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ํŠน์ • ๊ธฐ๋Šฅ์ด๋‚˜ ๋™์ž‘์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. time ํ•จ์ˆ˜์— ์ „๋‹ฌํ–ˆ๋˜ ๋ผ๋ฒจ ๊ฐ’๊ณผ ๋™์ผํ•œ ๋ผ๋ฒจ์„ ์ž…๋ ฅํ•˜๋ฉด ํƒ€์ด๋จธ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด์„œ time ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ๋˜ ์‹œ๊ฐ„ ๋ถ€ํ„ฐ timeEnd ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ ์‹œ๊ฐ„๊นŒ์ง€ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ Node.js v6.0.0 ๋ถ€ํ„ฐ timeEnd ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๋‚ด๋ถ€์— ID๋กœ ์ƒ์„ฑ๋œ ํƒ€์ด๋จธ๊ฐ€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ID๋กœ timeEnd๊ฐ€ ๋‘ ๋ฒˆ ์ด์ƒ ํ˜ธ์ถœ๋˜๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ  ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

  • console.trace(message[, …args])

‘Trace: ‘๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ traceํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ ๋œ ์‹œ์ ์˜ Stack ์ •๋ณด๋ฅผ ํ‘œ์ค€ ์˜ค๋ฅ˜๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

  • console.warn([data][, …args])

์ž…๋ ฅ ๋ฐ›์€ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์ค€ ์˜ค๋ฅ˜๋กœ ๋‚ด๋ณด๋‚ด๋Š” console.error์™€ ๋™์ผํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ, Node.js์—์„œ๋Š” ํ‘œ์ค€ ์ถœ๋ ฅ, ํ‘œ์ค€ ์˜ค๋ฅ˜๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” console ๊ฐ์ฒด ๋Œ€์‹  ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ์ถœ๋ ฅ ๊ฐ€๋Šฅํ•œ ์ŠคํŠธ๋ฆผ์„ ์ง€์ •ํ•ด์„œ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก Console ํด๋ž˜์Šค๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด getStreamSomehow์ด Writable ์ŠคํŠธ๋ฆผ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const out = getStreamSomehow();
const err = getStreamSomehow();
const myConsole = new console.Console(out, err);

myConsole.log('Hello, World')

๋ฉ”์‹œ์ง€ ํ˜•์‹

Node.js์—์„œ console๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด util.format() ํ•จ์ˆ˜์˜ ๊ธฐ๋Šฅ์ผ ์ด์šฉํ•œ ํ…์ŠคํŠธ ํ˜•์‹์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Hello, World์™€ ๊ฐ™์€ ๊ณ ์ „ ๋ฌธ์žฅ์„ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

console.log('Hello World');

๋งŒ์•ฝ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด

var world = 'World';
console.log('Hello ' + world);

๋˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝค๋งˆ(‘,’)๋ฅผ ์ด์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ๊ณต๋ฐฑ ๋ฌธ์ž๋กœ ์—ฐ๊ฒฐํ•ด์„œ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

var world = 'World';
console.log('Hello', world);

ํŠน์ • ๋ฌธ์ž์—ด์„ ์น˜ํ™˜ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด %๋ฌธ์ž๋ฅผ ์ด์šฉํ•œ ์น˜ํ™˜ ํ˜•์‹์„ ์ด์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var world = 'World';
console.log('Hello %s', world);

๋˜ํ•œ, Node.js v4 ์ด์ƒ์˜ ๊ฒฝ์šฐ ES6๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด Template Literal ๊ธฐ๋Šฅ์„ ์ด์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var world = 'World';
console.log(`Hello ${world}`);

์น˜ํ™˜ ํ˜•์‹์— ๋” ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ util.format(format[, …args])‘๊ณผ Template literals๋ฅผ ์ฐธ๊ณ ํ•˜๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ํ™•์ธํ•˜๊ธฐ

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

Node.js๋ฅผ PC์™€ ๊ฐ™์€ ๊ฐœ์ธ ํ™˜๊ฒฝ์ด์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์‹คํ–‰ node runtime์„ ์‹คํ–‰ํ–ˆ๋˜ ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์ฐฝ ๋˜๋Š” DOS์ฐฝ์— ๊ทธ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋ฐ Cloud ํ™˜๊ฒฝ์ธ Bluemix์—์„œ ์‹คํ–‰ ์ค‘์ธ ์•ฑ์€ ์–ด๋””์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

Bluemix ์•ฑ์ด ์‹คํ–‰ ์ค‘์— ์ถœ๋ ฅ๋˜๋Š” ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋Š” ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ™•์ธ ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Bluemix Dashboard์—์„œ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ํ™•์ธ
  • ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์ฐฝ์—์„œ Bluemix CLI๋กœ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ํ™•์ธ
  • ์™ธ๋ถ€ ๋กœ๊ทธ ์‹œ์Šคํ…œ์„ ํ†ตํ•œ ๋ฉ”์‹œ์ง€ ํ™•์ธ

Bluemix Dashboard์—์„œ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ํ™•์ธ

Bluemix์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ž˜ ๋ฐฐํฌ๋˜์—ˆ๋‹ค๋ฉด, Bluemix Dashboard ์›น์—์„œ ํ•ด๋‹น ์•ฑ์— ๋Œ€ํ•œ ์„œ๋น„์Šค ์—ฐ๊ฒฐ ์ •๋ณด์™€ ๋”๋ถˆ์–ด ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฉ”๋‰ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹œ๋ณด๋“œ ์•ฑ์˜ ๋กœ๊ทธ ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ณผ๊ฑฐ ์•ฑ์ด ์ถœ๋ ฅํ•œ ๋กœ๊ทธ์™€ ํ˜„์žฌ ์ถœ๋ ฅ๋˜๋Š” ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

debug_dashboard

dashboard_logview

ํ•„์š”์— ๋”ฐ๋ผ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋งŒ ๋”ฐ๋กœ ๋ณด๊ฑฐ๋‚˜ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ์œ ํ˜•, ํŠน์ • ์ธ์Šคํ„ด์Šค๊ฐ€ ์ถœ๋ ฅํ•˜๋Š” ๋กœ๊ทธ ์ •๋ณด ๋“ฑ์„ ๋”ฐ๋กœ ํ•„ํ„ฐ๋งํ•ด์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์ฐฝ์—์„œ Bluemix CLI๋กœ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ํ™•์ธ

Bluemix Dashboard์—์„œ ํ™•์ธํ•œ ๋ฐฉ๋ฒ•์ด ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๋ฉด, Bluemix CLI(Command Line Interface )๋Š” ๋ช…๋ น์ฐฝ์—์„œ ๋ช…๋ น์–ด๋ฅผ ์ง์ ‘ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. Bluemix๋Š” Cloud Foundary ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฏ€๋กœ CF ๋ช…๋ น ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ•œ CLI๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

https://console.ng.bluemix.net/docs/cli/index.html#downloads์—์„œ ๋ฐ›์•„ ์„ค์น˜ ํ›„ ๋ช…๋ น์ฐฝ์—์„œ ์ด์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, Bluemix ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ๊ฐ€์žฅ ๋จผ์ € cf login ๋ช…๋ น์œผ๋กœ Bluemix ์„œ๋น„์Šค์— ๋กœ๊ทธ์ธ์„ ํ•ด์•ผ ์ •์ƒ์ ์ธ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

cf login

debug_cf_login

login์‹œ ํšŒ์› ๊ฐ€์ž…ํ–ˆ๋˜ email ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ ๋‚˜๋ฉด organization๊ณผ work space๋ฅผ ์„ ํƒํ•˜๋„๋ก ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌํ•œ ์•ฑ์ด ์žˆ๋Š” ๊ณณ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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

cf apps

debug_cf_apps

์ด์ œ cf logs ๋ช…๋ น์œผ๋กœ ์•ฑ์˜ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

cf logs <app_name>

๋‹จ, cf logs ๋ช…๋ น์„ ์ด์šฉํ•˜๋ฉด ํ•ด๋‹น ์‹œ์  ์ดํ›„ ๋ถ€ํ„ฐ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ถœ๋ ฅ์ด ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ Dashboard์—์„œ์ฒ˜๋Ÿผ ์ตœ๊ทผ ์ถœ๋ ฅ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด –recent ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

cf logs </app_name><app_name> --recent

debug_cf_logs_recent

์ฐธ๊ณ ๋กœ, Bluemix CLI ์ค‘ CF ๋ช…๋ น์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ๋ช…๋ น ๋˜๋Š” CF ๋ช…๋ น์— ๋Œ€ํ•œ ๋ฌธ์„œ
๋ฅผ ์ฐธ๊ณ ํ•˜๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

cf --help

debug_cf_help1

์™ธ๋ถ€ ๋กœ๊ทธ ์‹œ์Šคํ…œ์„ ํ†ตํ•œ ๋ฉ”์‹œ์ง€ ํ™•์ธ

Bluemix ์•ฑ์ด ์ƒ์„ฑํ•˜๋Š” ๋กœ๊ทธ ์ •๋ณด๋Š” ๋‹จ์ˆœํžˆ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ƒ์„ฑ ์‹œ๊ฐ„, ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•œ ์ปดํฌ๋„ŒํŠธ, ์ŠคํŠธ๋ฆผ ํƒ€์ž… ์ •๋ณด๋„ ๊ฐ™์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ •๋ณด๋ฅผ ๋ถ„์„์šฉ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๊ฑฐ๋‚˜ 7์ผ๋กœ ์ œํ•œ๋œ Bluemix์—์„œ ๋กœ๊ทธ ์ €์žฅ ๊ธฐ๊ฐ„ ๋ณด๋‹ค ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ„๋„์˜ ๋กœ๊น… ์‹œ์Šคํ…œ(Splunk์™€ ๊ฐ™์€)์„ ๊ตฌ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๋Š” https://console.ng.bluemix.net/docs/monitor_log/monitoringandlogging.html์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ดํ›„ Log drain ํ•ญ๋ชฉ์œผ๋กœ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ