web-dev-qa-db-ja.com

偽のログが機能しない

私はFeign restクライアントからのリクエストごとにロギングを機能させようとしています。ただし、「標準」のSlf4jロギングは機能しますが、ロギングを機能させることはできません。

私は次のものを持っています:

public MyClient() {
        initConnectionProperties();

        this.service = Feign.builder()
                .contract(new JAXRSContract())
                .decoder(getJacksonDecoder())
                .encoder(getJacksonEncoder())


                .requestInterceptor(new BasicAuthRequestInterceptor(user, password))
                //.client(new OkHttpClient())
                .logger(new Slf4jLogger(MyClient.class)) //not working

                .logLevel(feign.Logger.Level.BASIC)
                .target(MyClient.class, this.url);
        logger.info("Connection parameters: url = " + url + ", user = " + user); //Is working
    }
12
Magick

以下のようにapplication.propertiesでロギングを構成する必要があります。

logging.level.<package path>.MyClient=DEBUG

Application.ymlを使用している場合:

logging.level.<package path>.MyClient: DEBUG

ログレベルは、ログに記録する量をFeignに伝えるように設定できます。

オプションは次のとおりです。

  • なし、ロギングなし(デフォルト)
  • BASIC、リクエストメソッドとURL、レスポンスステータスコードと実行時間のみを記録
  • HEADERS、リクエストおよびレスポンスヘッダーとともに基本情報を記録します
  • FULL、リクエストとレスポンスの両方のヘッダー、ボディ、メタデータを記録します

例:

logLevel(feign.Logger.Level.NONE)
or
logLevel(feign.Logger.Level.BASIC)
or
logLevel(feign.Logger.Level.HEADERS)
or
logLevel(feign.Logger.Level.FULL)

詳細については、 this を参照してください。

8
Maverick

これは、カスタム構成クラスを使用してログを記録できた方法です

偽のログはDEBUGレベルにのみ応答します。

構成クラス

@Configuration
public class UserClientConfig {

    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.HEADERS;
    }
} 

クライアント

@FeignClient(name = "User", url = "http://localhost:8080",configuration=UserClientConfig.class)
public interface UserClient {

    @RequestMapping(method = RequestMethod.GET, value = "/user")
    List<User> getAllUsers();    

}

application.properties

logging.level.<pcakgepath>.UserClient: DEBUG
7
Niraj Sonawane

Maverickが回答で既に述べたように、まず、偽のクライアントクラスのログレベルをDEBUGに設定する必要があります。

次に、Spring Bootを使用する場合、Nirajが回答で既に述べたように@Configurationクラスを作成するオプションの横に、アプリケーションプロパティ/ yml構成ファイルで各クライアントを個別に構成できます。

feign: client: config: the_name_of_your_feign_client: connectTimeout: 5000 readTimeout: 5000 loggerLevel: basic

または、the_name_of_your_feign_clientの代わりにデフォルトを使用して、すべての偽のクライアントを同じように構成します。

feign: client: config: default: connectTimeout: 5000 readTimeout: 5000 loggerLevel: basic

2
Roland
private void setup() {
    //...
    feignBuilder.logger(new MyLogger());
    feignBuilder.logLevel(Logger.Level.FULL);
}

private static class MyLogger extends Logger {
    @Override
    protected void log(String s, String s1, Object... objects) {
        System.out.println(String.format(s + s1, objects)); // Change me!
    }
}

また、feignのlog4jロギングレベルをDEBUGに設定する必要がある場合があります。あなたがスプリングブーツを使用している場合、私のために働いたのは:

curl -X POST http://localhost/loggers/feign -H 'Content-Type: application/json' -d '{"configuredLevel": "DEBUG"}'
1
Stimp