[
https://issues.apache.org/jira/browse/LOG4J2-1692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15657523#comment-15657523
]
ASF GitHub Bot commented on LOG4J2-1692:
----------------------------------------
Github user mikaelstaldal commented on a diff in the pull request:
https://github.com/apache/logging-log4j2/pull/48#discussion_r87621716
--- Diff: src/site/xdoc/manual/thread-context.xml ---
@@ -26,164 +26,183 @@
</properties>
<body>
- <section name="Log4j 2 API">
- <subsection name="Thread Context">
- <h4>Introduction</h4>
- <p>Log4j introduced the concept of the Mapped Diagnostic Context
or MDC. It has been documented and
- discussed in numerous places including
- <a
href="http://veerasundar.com/blog/2009/10/log4j-mdc-mapped-diagnostic-context-what-and-why/">Log4j
MDC: What and Why</a> and
- <a
href="http://blog.f12.no/wp/2004/12/09/log4j-and-the-mapped-diagnostic-context/">Log4j
and the Mapped Diagnostic Context</a>.
- In addition, Log4j 1.x provides support for a Nested
Diagnostic Context or NDC. It too has been documented
- and discussed in various places such as
- <a
href="http://lstierneyltd.com/blog/development/log4j-nested-diagnostic-contexts-ndc/">Log4j
NDC</a>.
- SLF4J/Logback followed with its own implementation of the MDC,
which is documented very well at
- <a href="http://logback.qos.ch/manual/mdc.html">Mapped
Diagnostic Context</a>.
- </p>
- <p>Log4j 2 continues with the idea of the MDC and the NDC but
merges them into a single Thread Context.
- The Thread Context Map is the equivalent of the MDC and the
Thread Context Stack is the equivalent of the
- NDC. Although these are frequently used for purposes other
than diagnosing problems, they are still
- frequently referred to as the MDC and NDC in Log4j 2 since
they are already well known by those acronyms.
- </p>
- <h4>Fish Tagging</h4>
- <p>Most real-world systems have to deal with multiple clients
simultaneously. In a typical multithreaded
- implementation of such a system, different threads will handle
different clients. Logging is
- especially well suited to trace and debug complex distributed
applications. A common approach to
- differentiate the logging output of one client from another is
to instantiate a new separate logger for
- each client. This promotes the proliferation of loggers and
increases the management overhead of logging.
- </p>
- <p>A lighter technique is to uniquely stamp each log request
initiated from the same client interaction.
- Neil Harrison described this method in the book "Patterns for
Logging Diagnostic Messages," in <em>Pattern
- Languages of Program Design 3</em>, edited by R. Martin, D.
Riehle, and F. Buschmann
- (Addison-Wesley, 1997). Just as a fish can be tagged and have
its movement tracked, stamping log
- events with a common tag or set of data elements allows the
complete flow of a transaction or a request
- to be tracked. We call this <i>Fish Tagging</i>.
- </p>
- <p>Log4j provides two mechanisms for performing Fish Tagging;
the Thread Context Map and the Thread
- Context Stack. The Thread Context Map allows any number of
items to be added and be identified
- using key/value pairs. The Thread Context Stack allows one or
more items to be pushed on the
- Stack and then be identified by their order in the Stack or by
the data itself. Since key/value
- pairs are more flexible, the Thread Context Map is recommended
when data items may be added during
- the processing of the request or when there are more than one
or two items.
- </p>
- <p>To uniquely stamp each request using the Thread Context
Stack, the user pushes contextual information
- on to the Stack.
- </p>
- <pre class="prettyprint linenums">
-ThreadContext.push(UUID.randomUUID().toString()); // Add the fishtag;
+ <section name="Log4j 2 API">
--- End diff --
Can you revert the formatting changes? It makes it hard to review the
actual changes.
> putAll() method for CloseableThreadContext
> ------------------------------------------
>
> Key: LOG4J2-1692
> URL: https://issues.apache.org/jira/browse/LOG4J2-1692
> Project: Log4j 2
> Issue Type: Improvement
> Components: API
> Affects Versions: 2.6
> Reporter: Greg Thomas
> Priority: Minor
>
> The ThreadContext supports a putAll(final Map<String, String> m) method.
> It would be useful, particularly when using thread pools, to have a similar
> method for the CloseableThreadContext.
> Similarly, a pushAll() method would be useful.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]