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.
-
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
deprecated(java.lang.String msg, java.lang.Object... params)
Logs a deprecation message, adding a formatted warning message as a response header on the thread context.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)
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.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 Detail
-
WARNING_HEADER_PATTERN
public static final java.util.regex.Pattern WARNING_HEADER_PATTERN
Regular 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.
-
-
Constructor Detail
-
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 Detail
-
setThreadContext
public static void setThreadContext(ThreadContext threadContext)
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
public static void removeThreadContext(ThreadContext threadContext)
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)
-
deprecated
public void deprecated(java.lang.String msg, java.lang.Object... params)
Logs a deprecation message, adding a formatted warning message as a response header on the thread context.
-
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)
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
-
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
-
-