我需要实时输出API的带时间戳的日志。这些必须在R控制台上输出。
我在读取从API端点函数内部调用的SO问题here时写了这个函数。但是这会输出函数名“print_log”本身。当我用-2替换-1时,我得到了调用函数的完整代码但没有函数的名称。我只需要调用print_log的函数名称。
print_log<-function(){
api<-deparse(sys.calls()[[sys.nframe()-1]])
sprintf("%20s:%40s",now(),api)
}
答案 0 :(得分:0)
我不确定如何纠正代码,但还有其他几种选择:
#' @filter log
function(req){
cat("Incoming request for", req$PATH_INFO, "\n")
forward()
}
#' @get /
function(){
# ...
}
如果您想要包含请求中提供的参数,您可以让过滤器接受...
。
#' @filter logger
function(...){
print(list(...))
forward()
}
对于像server.org/endpoint?a=1&b=2
这样的请求,会打印出类似的内容:
$res
<PlumberResponse>
Public:
body: NULL
clone: function (deep = FALSE)
headers: list
initialize: function (serializer = serializer_json())
serializer: function (val, req, res, errorHandler)
setCookie: function (name, value, path)
setHeader: function (name, value)
status: 200
toResponse: function ()
$req
<environment: 0x108fbdff0>
$a
[1] "1"
$b
[1] "2"