Class HttpLogOptions

java.lang.Object
com.azure.core.http.policy.HttpLogOptions

public class HttpLogOptions extends Object
The HttpLogOptions class provides configuration options for HTTP logging. This includes setting the log level, specifying allowed header names and query parameters for logging, and controlling whether to pretty print the body of HTTP messages.

This class is useful when you need to control the amount of information that is logged during the execution of HTTP requests and responses. It allows you to specify the log level, which determines the amount of detail included in the logs (such as the URL, headers, and body of requests and responses).

Code sample:

In this example, the HttpLogOptions is created and the log level is set to HttpLogDetailLevel.BODY_AND_HEADERS. This means that the URL, HTTP method, headers, and body content of each request and response will be logged. The allowed header names and query parameters for logging are also specified, and pretty printing of the body is enabled. The HttpLogOptions is then used to create an HttpLoggingPolicy, which can then be added to the pipeline.

 HttpLogOptions logOptions = new HttpLogOptions();
 logOptions.setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS);
 logOptions.setAllowedHttpHeaderNames(new HashSet<>(Arrays.asList(HttpHeaderName.DATE,
     HttpHeaderName.X_MS_REQUEST_ID)));
 logOptions.setAllowedQueryParamNames(new HashSet<>(Arrays.asList("api-version")));
 HttpLoggingPolicy loggingPolicy = new HttpLoggingPolicy(logOptions);
 
See Also:
  • Constructor Details

    • HttpLogOptions

      public HttpLogOptions()
      Creates a new instance that does not log any information about HTTP requests or responses.
  • Method Details

    • getLogLevel

      public HttpLogDetailLevel getLogLevel()
      Gets the level of detail to log on HTTP messages.
      Returns:
      The HttpLogDetailLevel.
    • setLogLevel

      public HttpLogOptions setLogLevel(HttpLogDetailLevel logLevel)
      Sets the level of detail to log on Http messages.

      If logLevel is not provided, default value of HttpLogDetailLevel.NONE is set.

      Parameters:
      logLevel - The HttpLogDetailLevel.
      Returns:
      The updated HttpLogOptions object.
    • getAllowedHeaderNames

      @Deprecated public Set<String> getAllowedHeaderNames()
      Deprecated.
      Gets the allowed headers that should be logged.

      With the deprecation of this method, this will now return a new HashSet each time called where the values are mapped from HttpHeaderName.getCaseSensitiveName().

      Returns:
      The list of allowed headers.
    • getAllowedHttpHeaderNames

      public Set<HttpHeaderName> getAllowedHttpHeaderNames()
      Gets the allowed HttpHeaderNames that should be logged.
      Returns:
      The list of allowed HttpHeaderNames.
    • setAllowedHeaderNames

      @Deprecated public HttpLogOptions setAllowedHeaderNames(Set<String> allowedHeaderNames)
      Deprecated.
      Sets the given allowed headers that should be logged.

      This method sets the provided header names to be the allowed header names which will be logged for all HTTP requests and responses, overwriting any previously configured headers. Additionally, users can use addAllowedHeaderName(String) or getAllowedHeaderNames() to add or remove more headers names to the existing set of allowed header names.

      With the deprecation of this method, if allowedHeaderNames is non-null, this will map the passed allowedHeaderNames to a set of HttpHeaderName using HttpHeaderName.fromString(String) on each value in the set.

      Parameters:
      allowedHeaderNames - The list of allowed header names.
      Returns:
      The updated HttpLogOptions object.
    • setAllowedHttpHeaderNames

      public HttpLogOptions setAllowedHttpHeaderNames(Set<HttpHeaderName> allowedHttpHeaderNames)
      Sets the given allowed HttpHeaderNames that should be logged.

      This method sets the provided header names to be the allowed header names which will be logged for all HTTP requests and responses, overwriting any previously configured headers. Additionally, users can use addAllowedHeaderName(String) or getAllowedHeaderNames() to add or remove more headers names to the existing set of allowed header names.

      Parameters:
      allowedHttpHeaderNames - The list of allowed HttpHeaderNames.
      Returns:
      The updated HttpLogOptions object.
    • addAllowedHeaderName

      @Deprecated public HttpLogOptions addAllowedHeaderName(String allowedHeaderName)
      Sets the given allowed header to the default header set that should be logged.

      With the deprecation of this method, the passed allowedHeaderName will be converted to an HttpHeaderName using HttpHeaderName.fromString(String).

      Parameters:
      allowedHeaderName - The allowed header name.
      Returns:
      The updated HttpLogOptions object.
      Throws:
      NullPointerException - If allowedHeaderName is null.
    • addAllowedHttpHeaderName

      public HttpLogOptions addAllowedHttpHeaderName(HttpHeaderName allowedHeaderName)
      Sets the given allowed HttpHeaderName to the default header set that should be logged.
      Parameters:
      allowedHeaderName - The allowed HttpHeaderName.
      Returns:
      The updated HttpLogOptions object.
      Throws:
      NullPointerException - If allowedHeaderName is null.
    • getAllowedQueryParamNames

      public Set<String> getAllowedQueryParamNames()
      Gets the allowed query parameters.
      Returns:
      The list of allowed query parameters.
    • setAllowedQueryParamNames

      public HttpLogOptions setAllowedQueryParamNames(Set<String> allowedQueryParamNames)
      Sets the given allowed query params to be displayed in the logging info.
      Parameters:
      allowedQueryParamNames - The list of allowed query params from the user.
      Returns:
      The updated HttpLogOptions object.
    • addAllowedQueryParamName

      public HttpLogOptions addAllowedQueryParamName(String allowedQueryParamName)
      Sets the given allowed query param that should be logged.
      Parameters:
      allowedQueryParamName - The allowed query param name from the user.
      Returns:
      The updated HttpLogOptions object.
      Throws:
      NullPointerException - If allowedQueryParamName is null.
    • getApplicationId

      @Deprecated public String getApplicationId()
      Deprecated.
      Use ClientOptions to configure applicationId.
      Gets the application specific id.
      Returns:
      The application specific id.
    • setApplicationId

      @Deprecated public HttpLogOptions setApplicationId(String applicationId)
      Deprecated.
      Use ClientOptions to configure applicationId.
      Sets the custom application specific id supplied by the user of the client library.
      Parameters:
      applicationId - The user specified application id.
      Returns:
      The updated HttpLogOptions object.
      Throws:
      IllegalArgumentException - If applicationId contains spaces or is larger than 24 characters in length.
    • isPrettyPrintBody

      @Deprecated public boolean isPrettyPrintBody()
      Deprecated.
      Use setRequestLogger(HttpRequestLogger) and setResponseLogger(HttpResponseLogger) to configure how requests and responses should be logged at a granular level instead.
      Gets flag to allow pretty printing of message bodies.
      Returns:
      true if pretty printing of message bodies is allowed.
    • setPrettyPrintBody

      @Deprecated public HttpLogOptions setPrettyPrintBody(boolean prettyPrintBody)
      Deprecated.
      Use setRequestLogger(HttpRequestLogger) and setResponseLogger(HttpResponseLogger) to configure how requests and responses should be logged at a granular level instead.
      Sets flag to allow pretty printing of message bodies.
      Parameters:
      prettyPrintBody - If true, pretty prints message bodies when logging. If the detailLevel does not include body logging, this flag does nothing.
      Returns:
      The updated HttpLogOptions object.
    • getRequestLogger

      public HttpRequestLogger getRequestLogger()
      Gets the HttpRequestLogger that will be used to log HTTP requests.

      A default HttpRequestLogger will be used if one isn't supplied.

      Returns:
      The HttpRequestLogger that will be used to log HTTP requests.
    • setRequestLogger

      public HttpLogOptions setRequestLogger(HttpRequestLogger requestLogger)
      Sets the HttpRequestLogger that will be used to log HTTP requests.

      A default HttpRequestLogger will be used if one isn't supplied.

      Parameters:
      requestLogger - The HttpRequestLogger that will be used to log HTTP requests.
      Returns:
      The updated HttpLogOptions object.
    • getResponseLogger

      public HttpResponseLogger getResponseLogger()
      Gets the HttpResponseLogger that will be used to log HTTP responses.

      A default HttpResponseLogger will be used if one isn't supplied.

      Returns:
      The HttpResponseLogger that will be used to log HTTP responses.
    • setResponseLogger

      public HttpLogOptions setResponseLogger(HttpResponseLogger responseLogger)
      Sets the HttpResponseLogger that will be used to log HTTP responses.

      A default HttpResponseLogger will be used if one isn't supplied.

      Parameters:
      responseLogger - The HttpResponseLogger that will be used to log HTTP responses.
      Returns:
      The updated HttpLogOptions object.
    • disableRedactedHeaderLogging

      public HttpLogOptions disableRedactedHeaderLogging(boolean disableRedactedHeaderLogging)
      Sets the flag that controls if header names which value is redacted should be logged.

      Applies only if logging request and response headers is enabled. See setLogLevel(HttpLogDetailLevel) for details. Defaults to false - redacted header names are logged.

      Parameters:
      disableRedactedHeaderLogging - If true, redacted header names are not logged. Otherwise, they are logged as a comma separated list under redactedHeaders property.
      Returns:
      The updated HttpLogOptions object.
    • isRedactedHeaderLoggingDisabled

      public boolean isRedactedHeaderLoggingDisabled()
      Gets the flag that controls if header names with redacted values should be logged.
      Returns:
      true if header names with redacted values should be logged.