Package org.elasticsearch.common.logging
Class DeprecationLogger
java.lang.Object
org.elasticsearch.common.logging.DeprecationLogger
public class DeprecationLogger
extends java.lang.Object
A logger that logs deprecation notices.
-
Field Summary
Fields Modifier and Type Field Description static java.util.regex.Pattern
WARNING_HEADER_PATTERN
Regular expression to test if a string matches the RFC7234 specification for warning headers.static java.util.regex.Pattern
WARNING_XCONTENT_LOCATION_PATTERN
-
Constructor Summary
Constructors Constructor Description DeprecationLogger(org.apache.logging.log4j.Logger parentLogger)
Creates a new deprecation logger based on the parent logger. -
Method Summary
Modifier and Type Method Description void
deprecatedAndMaybeLog(java.lang.String key, java.lang.String msg, java.lang.Object... params)
Adds a formatted warning message as a response header on the thread context, and logs a deprecation message if the associated key has not recently been seen.static java.lang.String
escapeAndEncode(java.lang.String s)
Escape and encode a string as a valid RFC 7230 quoted-string.static java.lang.String
extractWarningValueFromWarningHeader(java.lang.String s, boolean stripXContentPosition)
Extracts the warning value from the value of a warning header that is formatted according to RFC 7234.static java.lang.String
formatWarning(java.lang.String s)
Format a warning string in the proper warning format by prepending a warn code, warn agent, wrapping the warning string in quotes, and appending the RFC 7231 date.java.lang.String
getXOpaqueId(java.util.Set<ThreadContext> threadContexts)
static void
removeThreadContext(ThreadContext threadContext)
Remove theThreadContext
used to add deprecation headers to network responses.static void
setThreadContext(ThreadContext threadContext)
Set theThreadContext
used to add deprecation headers to network responses.
-
Field Details
-
WARNING_HEADER_PATTERN
public static final java.util.regex.Pattern WARNING_HEADER_PATTERNRegular expression to test if a string matches the RFC7234 specification for warning headers. This pattern assumes that the warn code is always 299. Further, this pattern assumes that the warn agent represents a version of Elasticsearch including the build hash. -
WARNING_XCONTENT_LOCATION_PATTERN
public static final java.util.regex.Pattern WARNING_XCONTENT_LOCATION_PATTERN
-
-
Constructor Details
-
DeprecationLogger
public DeprecationLogger(org.apache.logging.log4j.Logger parentLogger)Creates a new deprecation logger based on the parent logger. Automatically prefixes the logger name with "deprecation", if it starts with "org.elasticsearch.", it replaces "org.elasticsearch" with "org.elasticsearch.deprecation" to maintain the "org.elasticsearch" namespace.
-
-
Method Details
-
setThreadContext
Set theThreadContext
used to add deprecation headers to network responses.This is expected to only be invoked by the
Node
's constructor (therefore once outside of tests).- Parameters:
threadContext
- The thread context owned by theThreadPool
(and implicitly aNode
)- Throws:
java.lang.IllegalStateException
- if thisthreadContext
has already been set
-
removeThreadContext
Remove theThreadContext
used to add deprecation headers to network responses.This is expected to only be invoked by the
Node
'sclose
method (therefore once outside of tests).- Parameters:
threadContext
- The thread context owned by theThreadPool
(and implicitly aNode
)- Throws:
java.lang.IllegalStateException
- if thisthreadContext
is unknown (and presumably already unset before)
-
deprecatedAndMaybeLog
public void deprecatedAndMaybeLog(java.lang.String key, java.lang.String msg, java.lang.Object... params)Adds a formatted warning message as a response header on the thread context, and logs a deprecation message if the associated key has not recently been seen.- Parameters:
key
- the key used to determine if this deprecation should be loggedmsg
- the message to logparams
- parameters to the message
-
extractWarningValueFromWarningHeader
public static java.lang.String extractWarningValueFromWarningHeader(java.lang.String s, boolean stripXContentPosition)Extracts the warning value from the value of a warning header that is formatted according to RFC 7234. That is, given a string299 Elasticsearch-6.0.0 "warning value"
, the return value of this method would bewarning value
.- Parameters:
s
- the value of a warning header formatted according to RFC 7234.- Returns:
- the extracted warning value
-
getXOpaqueId
-
formatWarning
public static java.lang.String formatWarning(java.lang.String s)Format a warning string in the proper warning format by prepending a warn code, warn agent, wrapping the warning string in quotes, and appending the RFC 7231 date.- Parameters:
s
- the warning string to format- Returns:
- a warning value formatted according to RFC 7234
-
escapeAndEncode
public static java.lang.String escapeAndEncode(java.lang.String s)Escape and encode a string as a valid RFC 7230 quoted-string.- Parameters:
s
- the string to escape and encode- Returns:
- the escaped and encoded string
-