์ฌํ ๋จ๊ณ:
stdout
๋ฐ stderr
๋ฅผ ๊ตฌ์ฑํ์ฌ ๋ค๋ฅธ ์์น์ ์ถ๋ ฅํฉ๋๋ค.Rscript
๋ฅผ ํตํด ๋ฐฐ๊ด๊ณต์ ์์ํฉ๋๋ค.library(plumber)
r <- plumb("some_file.R")
r$run(host = host, port = port)
์์๋๋ ๋์: ๋ค์ ๊ณผ ๊ฐ์ ์ ๋ณด ๋ฉ์์ง
Starting server to listen on port 1234
ํ์ค ์ถ๋ ฅ์ผ๋ก ๋ค์ด๊ฐ์ผ ํฉ๋๋ค.
์ค์ ๋์: ์ ๋ณด ๋ฉ์์ง๊ฐ ๋์ ํ์ค ์ค๋ฅ๋ก ๋ค์ด๊ฐ๋๋ค.
์ข์ ์บ์น!
message
๊ฐ stderr
์ถ๋ ฅ์ ์์ฑํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ์ ํ ๊ฒฝ์ฐ cat
๋ฌธ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
์ ํ ๊ธฐ์ : shiny
๋ "Listening on ..." ๋ฉ์์ง๋ฅผ ๋ด๋ณด๋
๋๋ค.
https://github.com/rstudio/shiny/blob/29d24d7e08f161d79c8f227723fbec67353b6fc9/R/server.R#L590
์์ฉ ํ๋ก๊ทธ๋จ ์์ค์์ message()
์ ํธ๋ฅผ ์ก์ ํ์ค ์ถ๋ ฅ์ ์ธ ์๋ ์์ต๋๋ค. ์ด๊ฒ์ด ์ ๋์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ์
๋๋ค.
withCallingHandlers(
message("Informational message."),
message = function(m) {
cat(m$message)
invokeRestart("muffleMessage")
}
)
์ด๊ฒ์ ๋ํ ์๋ฅผ ๋ค์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฉ์์ง๋ฅผ ํฌ์ฐฉํ๊ณ ๊ตฌ์กฐํ๋ ๋ก๊น
์ถ๋ ฅ์ ์ํด ๋ค์ ํฌ๋งทํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์ ์๋ ๋๋ก cat()
์ง์ ์ฌ์ฉํ ๋ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์์ฉ ํ๋ก๊ทธ๋จ ์์ค์์
message()
์ ํธ๋ฅผ ์ก์ ํ์ค ์ถ๋ ฅ์ ์ธ ์๋ ์์ต๋๋ค. ์ด๊ฒ์ด ์ ๋์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ์ ๋๋ค.์ด๊ฒ์ ๋ํ ์๋ฅผ ๋ค์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฉ์์ง๋ฅผ ํฌ์ฐฉํ๊ณ ๊ตฌ์กฐํ๋ ๋ก๊น ์ถ๋ ฅ์ ์ํด ๋ค์ ํฌ๋งทํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์ ์๋ ๋๋ก
cat()
์ง์ ์ฌ์ฉํ ๋ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค.