我在java应用程序中使用Retrofit来访问access。
我使用的是简单的代码:
RestAdapter.Builder().setEndpoint(uri).setLogLevel(RestAdapter.LogLevel.HEADES_AND_ARGS).setConverter(new GsonConverter(gson)).setClient(httpClient).build();是否可能将改造日志映射到log4j?
发布于 2015-11-18 00:18:36
您还可以使用okhttp中的日志,2.6.0版的快照是在beta2版本的改造中引入的,很快就可以运行了,您可以看到如何在本指南上实现它,https://futurestud.io/blog/retrofit-2-log-requests-and-responses/非常容易使用和易于实现。
发布于 2015-03-20 10:21:55
RestAdapter.Builder以方法setLog(Log)作为参数,获取RestAdapter.Log接口。这个接口如下所示:
/** Simple logging abstraction for debug messages. */
public interface Log {
/** Log a debug message to the appropriate console. */
void log(String message);
}您可以将LogLevel设置为f.e。FULL和create类,它包装log4j并实现Log接口,并在log(String)方法中记录日志,但是您将得到所有的日志作为字符串。不可能检查日志是从哪个级别来的。
示例包装器
public class ExampleLog4J implements RestAdapter.Log {
private static final Logger logger = logger.getLogger(ExampleLogger.class)
ExampleLog4J(){
}
@Override
public void log(String message) {
log.info("Retrofit# "+message);
}
}在创建RestAdapter的地方使用:
new RestAdapter.Builder().setLog(new ExampleLog4J()).发布于 2015-07-15 05:58:04
您可以这样做:
new RestAdapter.Builder()
.setLogLevel(LOGGER.isDebugEnabled() ? retrofit.LogLevel.FULL : retrofit.LogLevel.BASIC)
.setLog(LOGGER.isDebugEnabled() ? LOGGER::debug : LOGGER::info)retrofit.LogLevel用于指定您需要从Retrofit获得多少详细日志记录。
retrofit.RestAdapter.Log的一个实现被传递给setLog() of RestAdapter。在本例中,RestAdapter将其所有内部日志委托给log4j Logger。
在这里,LOGGER是您要初始化的东西,如下所示
private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger.getLogger(SomeClass.class);Java8中的LOGGER::debug相当于下面的匿名类
new retrofit.RestAdapter.Log() {
@Override
public void log(String message) {
LOGGER.debug(message);
}
}https://stackoverflow.com/questions/29163883
复制相似问题