我正在使用 rJava 从 R 内部与 Amazon Web Services Java API 对话。经过一些最初的痛苦之后,我让它工作了。但是 API 非常健谈,并且向 R 反馈了大量非常适合调试的信息,但是现在我的代码可以工作了,我想消除这种信息喋喋不休的声音。我将如何摆脱这种喋喋不休?我什至不知道在哪里看。 API? rJava? R中的开关?
任何在何处寻找的帮助将不胜感激。以下是信息聊天的示例:
R> result <- uploadS3File(clusterObject$s3TempDir, streamFile)
Dec 17, 2010 12:12:52 PM com.amazonaws.http.HttpClient execute
INFO: Sending Request: PUT https://rtmphgdfkoughcboh8kl.s3.amazonaws.com /stream.txt Headers: (Authorization: AWS AKIAIC2FRTLFVNIOTMAQ:E++Z54SQsgoAntZ7JAd6aWJ2ZVs=, Date: Fri, 17 Dec 2010 18:12:52 GMT, Content-Length: 255579, Content-MD5: pMFNOWPJswXpAEULjfOclw==, Content-Type: text/plain, )
Dec 17, 2010 12:12:53 PM com.amazonaws.http.HttpClient handleResponse
INFO: Received successful response: 200, AWS Request ID: FC4113F003FCF631
R>
最佳答案
Jeffrey Breen's 答案为我指明了正确的方向。我对 log4j 进行了一些挖掘,发现 thanks to the AWS forum ,Java AWS API 没有设置 log4j,但它真的很容易添加。我所要做的就是将文件 log4j-1.2.16.jar
添加到我的类路径中。然后我使用 the examples in the API docs 创建了一个 log4J.properties 文件。然后我将放置 log4j.properties 文件的目录添加到我的类路径中,并且它起作用了!
所以我的 .onLoad() 函数的第一部分如下所示:
.onLoad <- function(lib, pkg) {
pathToSdk <- paste(system.file(package = "segue") , "/aws-java-sdk/", sep="")
jarPaths <- c(paste(pathToSdk, "lib/aws-java-sdk-1.1.0.jar", sep=""),
paste(pathToSdk, "third-party/commons-logging-1.1.1/commons-logging-1.1.1.jar", sep=""),
paste(pathToSdk, "third-party/commons-httpclient-3.0.1/commons-httpclient-3.0.1.jar", sep=""),
paste(pathToSdk, "third-party/commons-codec-1.3/commons-codec-1.3.jar", sep=""),
paste(pathToSdk, "third-party/log4j-1.2.16.jar", sep=""),
paste(pathToSdk, "third-party/", sep="")
)
.jpackage(pkg, morePaths=jarPaths)
## other stuff edited out
}
我的 log4j.properties 文件中有这个:
log4j.rootLogger=WARN, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
我的 log4j.properties 文件位于第三方/目录中,您可以看到它在类路径中。
关于java - R:让健谈的 Java 进程进入 STFU,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4473569/