Java 改装-Log4j

Java 改装-Log4j,java,log4j,retrofit,Java,Log4j,Retrofit,我在java应用程序中使用改型来访问api rest 我使用的是简单的代码: RestAdapter.Builder().setEndpoint(uri).setLogLevel(RestAdapter.LogLevel.HEADES_AND_ARGS).setConverter(new GsonConverter(gson)).setClient(httpClient).build(); 是否可以将改装日志映射到log4j?重新适应程序.Builder具有方法setLog(log),该方法获

我在java应用程序中使用改型来访问api rest

我使用的是简单的代码:

RestAdapter.Builder().setEndpoint(uri).setLogLevel(RestAdapter.LogLevel.HEADES_AND_ARGS).setConverter(new GsonConverter(gson)).setClient(httpClient).build();

是否可以将改装日志映射到log4j?

重新适应程序.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);
  }
new RestAdapter.Builder()
    .setLogLevel(LOGGER.isDebugEnabled() ? retrofit.LogLevel.FULL : retrofit.LogLevel.BASIC)
    .setLog(LOGGER.isDebugEnabled() ? LOGGER::debug : LOGGER::info)
您可以将LogLevel设置为f.e.FULL并创建一个类,该类包装log4j并实现
Log
接口,并将您的日志记录在
Log(String)
方法中,但您将以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);
    }
}
在创建RestaAdapter的地方,请使用:

new RestAdapter.Builder().setLog(new ExampleLog4J()).

您可以执行以下操作:

 /** Simple logging abstraction for debug messages. */
  public interface Log {
    /** Log a debug message to the appropriate console. */
    void log(String message);
  }
new RestAdapter.Builder()
    .setLogLevel(LOGGER.isDebugEnabled() ? retrofit.LogLevel.FULL : retrofit.LogLevel.BASIC)
    .setLog(LOGGER.isDebugEnabled() ? LOGGER::debug : LOGGER::info)
改装。LogLevel
用于指定改装所需的详细日志记录量

revolution.RestAdapter.Log
的实现被传递到
RestAdapter
setLog()
<代码>重新适应程序在这种情况下,将其所有内部日志委托给log4j Logger

这里的
LOGGER
是您在下面初始化的内容

private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger.getLogger(SomeClass.class);
Java 8中的
LOGGER::debug
相当于下面的匿名类

 new retrofit.RestAdapter.Log() {
      @Override
      public void log(String message) {
          LOGGER.debug(message);
      }
 }

您还可以使用来自okhttp的日志,来自版本2.6.0的快照(在beta2版本的改型和即将上线中引入)目前运行良好,您可以在本指南中看到如何实现它
非常易于使用和实现。

如果您有问题或需要解释,请询问:)改装生成的日志不是包装到log4j。如何包装到log4j?我知道你必须创建包装器。查看我的帖子,我将更新itpublic类RefughtLogger实现日志{private static final Logger Logger=Logger.getLogger(RefughtLogger.class);@Override public void Log(字符串消息){Logger.info(消息);}