3 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
這里發(fā)布了許多好的解決方案,但是我發(fā)現(xiàn)最簡單的方法是登錄到套接字并使用單獨(dú)的過程在控制臺中輸出日志調(diào)用。
我使用以下功能:
log.socket <- make.socket(port=4000)
Log <- function(text, ...) {
msg <- sprintf(paste0(as.character(Sys.time()), ": ", text, "\n"), ...)
cat(msg)
write.socket(log.socket, msg)
}
然后,您可以將日志語句放入代碼中,例如:
Log("Processing block %d of %d", i, n.blocks)
可以使用任何簡單的套接字偵聽工具實(shí)時(shí)查看日志輸出。例如,在Linux上使用netcat:
nc -l 4000
上面的日志語句將在netcat終端中顯示為:
2014-06-25 12:30:45: Processing block 2 of 13
該方法的優(yōu)點(diǎn)是可以遠(yuǎn)程工作,并在您需要記錄時(shí)提供詳細(xì)的輸出。
ps對于Windows上的用戶,請參閱Jon Craton的netcat端口。
pps我猜write.socketR函數(shù)可能不是線程安全的,但是除非您以高頻率登錄,否則您不太可能遇到任何問題。有一些需要注意的地方。
- 3 回答
- 0 關(guān)注
- 902 瀏覽
添加回答
舉報(bào)