首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改造- Log4j

改造- Log4j
EN

Stack Overflow用户
提问于 2015-03-20 10:03:14
回答 3查看 960关注 0票数 1

我在java应用程序中使用Retrofit来访问access。

我使用的是简单的代码:

代码语言:javascript
复制
RestAdapter.Builder().setEndpoint(uri).setLogLevel(RestAdapter.LogLevel.HEADES_AND_ARGS).setConverter(new GsonConverter(gson)).setClient(httpClient).build();

是否可能将改造日志映射到log4j?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-18 00:18:36

您还可以使用okhttp中的日志,2.6.0版的快照是在beta2版本的改造中引入的,很快就可以运行了,您可以看到如何在本指南上实现它,https://futurestud.io/blog/retrofit-2-log-requests-and-responses/非常容易使用和易于实现。

票数 1
EN

Stack Overflow用户

发布于 2015-03-20 10:21:55

RestAdapter.Builder以方法setLog(Log)作为参数,获取RestAdapter.Log接口。这个接口如下所示:

代码语言:javascript
复制
 /** 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)方法中记录日志,但是您将得到所有的日志作为字符串。不可能检查日志是从哪个级别来的。

示例包装器

代码语言:javascript
复制
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的地方使用:

代码语言:javascript
复制
new RestAdapter.Builder().setLog(new ExampleLog4J()).
票数 0
EN

Stack Overflow用户

发布于 2015-07-15 05:58:04

您可以这样做:

代码语言:javascript
复制
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是您要初始化的东西,如下所示

代码语言:javascript
复制
private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger.getLogger(SomeClass.class);

Java8中的LOGGER::debug相当于下面的匿名类

代码语言:javascript
复制
 new retrofit.RestAdapter.Log() {
      @Override
      public void log(String message) {
          LOGGER.debug(message);
      }
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29163883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档