This is an automated email from the ASF dual-hosted git repository. github-bot pushed a commit to branch 2.x-site-stg-out in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/2.x-site-stg-out by this push: new bd64afe121 Add website content generated from `b1982459e6ce379178752b1a0797efbe64168757` bd64afe121 is described below commit bd64afe1219ffeb3ac18f94dcf99668b219a7cc8 Author: ASF Logging Services RM <priv...@logging.apache.org> AuthorDate: Fri May 16 20:46:47 2025 +0000 Add website content generated from `b1982459e6ce379178752b1a0797efbe64168757` --- ...ag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg | 1 + graalvm.html | 58 +------ hibernate.html | 58 +------ log4j-jul.html | 58 +------ manual/architecture.html | 171 +++------------------ migrate-from-logback.html | 58 +------ migrate-from-slf4j.html | 58 +------ sitemap.xml | 118 +++++++------- 8 files changed, 93 insertions(+), 487 deletions(-) diff --git a/_images/diag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg b/_images/diag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg new file mode 100644 index 0000000000..19bc3dd128 --- /dev/null +++ b/_images/diag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="1022px" preserveAspectRatio="none" style="width:1327px;height:1022px;background:#FFFFFF;" version="1.1" viewBox="0 0 1327 1022" width="1327px" zoomAndPan="magnify"><defs/><g><!--cluster c--><g id="cluster_c"><path d="M8.5,150.89 L116.5,150.89 A3.75,3.75 0 0 1 119,153.39 L126,173.1869 L806.5,173.1869 A2.5,2.5 0 0 1 [...] \ No newline at end of file diff --git a/graalvm.html b/graalvm.html index 1b404f69bf..fc53b77b72 100644 --- a/graalvm.html +++ b/graalvm.html @@ -406,63 +406,11 @@ For instance, <code>log4j-slf4j2-impl</code> <em>bridges</em> SLF4J calls to Log <div class="paragraph"> <p>To make things a little bit more tangible, consider the following visualization of a typical Log4j Core installation with bridges for an application:</p> </div> -<div class="literalblock kroki-error"> -<div class="title">Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges</div> +<div class="imageblock kroki"> <div class="content"> -<pre>@startuml - -frame "Compile time" { - [Application] --> [Log4j API] : logs to - - [Log4j API] #Cyan - - [SLF4J] #Cyan - - [Library 1] --> [SLF4J] : logs to - [Application] --> [Library 1] : uses - [Application] --> [Library 2] : uses - [Application] --> [Library 3] : uses -} - -frame Runtime { - - [Log4j Core] <.. [Log4j API] : is implemented by - [Log4j Core] <.. (log4j2.xml) : is provided to - [Log4j Core] #LightGreen - - [JPL-to-Log4j] ..> [Log4j Core] : forwards to - [JPL-to-Log4j] #Yellow - - [SLF4J-to-Log4j] ..> [Log4j Core] : forwards to - [SLF4J-to-Log4j] #Yellow - - [JUL-to-Log4j] ..> [Log4j Core] : forwards to - [JUL-to-Log4j] #Yellow - - frame JRE { - [JPL] #Cyan - [JUL] #Cyan - } - -} - -[Library 2] --> [JUL] : logs to -[Library 3] --> [JPL] : logs to - -[JPL] ..> [JPL-to-Log4j] : is implemented by -[JUL] ..> [JUL-to-Log4j] : is implemented by -[SLF4J] ..> [SLF4J-to-Log4j] : is implemented by - -legend top right - | <#LightGreen> | Logging implementation | - | <#Yellow> | Logging bridge | - | <#Cyan> | Logging API | - | <size:18><U+2192></size> | Compile-time usage | - | <size:18><U+21E2></size> | Runtime usage | -endlegend - -@enduml</pre> +<img src="_images/diag-a51b68065f249459078382aa4c61888857f01b2c.svg" alt="Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges"> </div> +<div class="title">Figure 1. Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges</div> </div> </div> </details> diff --git a/hibernate.html b/hibernate.html index 86286f41f8..ebe21251e6 100644 --- a/hibernate.html +++ b/hibernate.html @@ -395,63 +395,11 @@ For instance, <code>log4j-slf4j2-impl</code> <em>bridges</em> SLF4J calls to Log <div class="paragraph"> <p>To make things a little bit more tangible, consider the following visualization of a typical Log4j Core installation with bridges for an application:</p> </div> -<div class="literalblock kroki-error"> -<div class="title">Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges</div> +<div class="imageblock kroki"> <div class="content"> -<pre>@startuml - -frame "Compile time" { - [Application] --> [Log4j API] : logs to - - [Log4j API] #Cyan - - [SLF4J] #Cyan - - [Library 1] --> [SLF4J] : logs to - [Application] --> [Library 1] : uses - [Application] --> [Library 2] : uses - [Application] --> [Library 3] : uses -} - -frame Runtime { - - [Log4j Core] <.. [Log4j API] : is implemented by - [Log4j Core] <.. (log4j2.xml) : is provided to - [Log4j Core] #LightGreen - - [JPL-to-Log4j] ..> [Log4j Core] : forwards to - [JPL-to-Log4j] #Yellow - - [SLF4J-to-Log4j] ..> [Log4j Core] : forwards to - [SLF4J-to-Log4j] #Yellow - - [JUL-to-Log4j] ..> [Log4j Core] : forwards to - [JUL-to-Log4j] #Yellow - - frame JRE { - [JPL] #Cyan - [JUL] #Cyan - } - -} - -[Library 2] --> [JUL] : logs to -[Library 3] --> [JPL] : logs to - -[JPL] ..> [JPL-to-Log4j] : is implemented by -[JUL] ..> [JUL-to-Log4j] : is implemented by -[SLF4J] ..> [SLF4J-to-Log4j] : is implemented by - -legend top right - | <#LightGreen> | Logging implementation | - | <#Yellow> | Logging bridge | - | <#Cyan> | Logging API | - | <size:18><U+2192></size> | Compile-time usage | - | <size:18><U+21E2></size> | Runtime usage | -endlegend - -@enduml</pre> +<img src="_images/diag-a51b68065f249459078382aa4c61888857f01b2c.svg" alt="Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges"> </div> +<div class="title">Figure 1. Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges</div> </div> </div> </details> diff --git a/log4j-jul.html b/log4j-jul.html index 8d1cc8d62f..dd94fea6ee 100644 --- a/log4j-jul.html +++ b/log4j-jul.html @@ -418,63 +418,11 @@ For instance, <code>log4j-slf4j2-impl</code> <em>bridges</em> SLF4J calls to Log <div class="paragraph"> <p>To make things a little bit more tangible, consider the following visualization of a typical Log4j Core installation with bridges for an application:</p> </div> -<div class="literalblock kroki-error"> -<div class="title">Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges</div> +<div class="imageblock kroki"> <div class="content"> -<pre>@startuml - -frame "Compile time" { - [Application] --> [Log4j API] : logs to - - [Log4j API] #Cyan - - [SLF4J] #Cyan - - [Library 1] --> [SLF4J] : logs to - [Application] --> [Library 1] : uses - [Application] --> [Library 2] : uses - [Application] --> [Library 3] : uses -} - -frame Runtime { - - [Log4j Core] <.. [Log4j API] : is implemented by - [Log4j Core] <.. (log4j2.xml) : is provided to - [Log4j Core] #LightGreen - - [JPL-to-Log4j] ..> [Log4j Core] : forwards to - [JPL-to-Log4j] #Yellow - - [SLF4J-to-Log4j] ..> [Log4j Core] : forwards to - [SLF4J-to-Log4j] #Yellow - - [JUL-to-Log4j] ..> [Log4j Core] : forwards to - [JUL-to-Log4j] #Yellow - - frame JRE { - [JPL] #Cyan - [JUL] #Cyan - } - -} - -[Library 2] --> [JUL] : logs to -[Library 3] --> [JPL] : logs to - -[JPL] ..> [JPL-to-Log4j] : is implemented by -[JUL] ..> [JUL-to-Log4j] : is implemented by -[SLF4J] ..> [SLF4J-to-Log4j] : is implemented by - -legend top right - | <#LightGreen> | Logging implementation | - | <#Yellow> | Logging bridge | - | <#Cyan> | Logging API | - | <size:18><U+2192></size> | Compile-time usage | - | <size:18><U+21E2></size> | Runtime usage | -endlegend - -@enduml</pre> +<img src="_images/diag-a51b68065f249459078382aa4c61888857f01b2c.svg" alt="Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges"> </div> +<div class="title">Figure 1. Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges</div> </div> </div> </details> diff --git a/manual/architecture.html b/manual/architecture.html index 81ce750d6a..5f925cdcfc 100644 --- a/manual/architecture.html +++ b/manual/architecture.html @@ -359,146 +359,11 @@ In this section we will try to explain major pillars its architecture stands on. An overview these major classes can be depicted as follows:</p> </div> -<div id="architecture-diagram" class="literalblock kroki-error"> -<div class="title">An overview of major classes and their relation</div> +<div id="architecture-diagram" class="imageblock kroki"> <div class="content"> -<pre>@startuml - -class LoggerContext { - Configuration config - Logger[] loggers - Logger getLogger(String name) -} - -note left of LoggerContext { - Anchor for the logging system -} - -LoggerContext --> "0..*" Logger - -package "Configuration" as c { - - class Configuration { - Appender[] appenders - Filter filter - LoggerConfig[] loggerConfigs - LoggerConfig getLoggerConfig(String name) - StrSubstitutor substitutor - } - - note left of Configuration - Encapsulates components compiled - from a user-provided configuration - file (e.g., `log4j2.xml`) - end note - - Configuration --> Filter - - Configuration --> "0..*" Appender - - Configuration --> "0..*" LoggerConfig - - Configuration --> StrSubstitutor - - class Appender { - AbstractManager manager - Layout layout - Filter filter - void append(LogEvent) - } - - Appender --> Layout - - Appender --> Filter - - class Layout { - byte[] encode(LogEvent) - } - - class Filter { - Result filter(LogEvent) - } - - note right of Filter - Note that a `Filter` can - be provided at 4 levels: - 1. `Configuration` - 2. `LoggerConfig` - 3. `AppenderControl` - 4. `Appender` - end note - - class LoggerConfig { - AppenderControl[] appenderControls - Level level - Filter filter - void log(LogEvent) - } - - LoggerConfig -[#green,thickness=6]-> "0..*" AppenderControl - - LoggerConfig --> Filter - - class AppenderControl { - Appender appender - Filter filter - void append(LogEvent) - } - - note right of AppenderControl - Decorates an `Appender` - with a `Filter` - end note - - AppenderControl -[#green,thickness=6]-> Appender - - AppenderControl --> Filter - - class StrSubstitutor { - Interpolator interpolator - String replace(String input) - } - - note right of StrSubstitutor - Responsible for - property substitution - (e.g., `${env:USER}`) - end note - - StrSubstitutor --> Interpolator - - class Interpolator { - StrLookup[] lookups - String lookup(String input) - } - - Interpolator --> "0..*" StrLookup - - class StrLookup { - String lookup(String input) - } -} - -LoggerContext --> Configuration - -class Logger { - void log(Level level, Message message) -} - -note right of Logger - The main API entry point - users interact with -end note - -Logger -[#green,thickness=6]-> LoggerConfig : delegates `log()` - -class AbstractManager { -} - -Appender -[#green,thickness=6]-> AbstractManager - -@enduml</pre> +<img src="../_images/diag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg" alt="An overview of major classes and their relation"> </div> +<div class="title">Figure 1. An overview of major classes and their relation</div> </div> <div class="paragraph"> <p>At a high level,</p> @@ -522,7 +387,7 @@ Both can be created directly (i.e., programmatically) or indirectly at first int <p><a href="#Configuration"><code>Configuration</code></a> is equipped with <a href="#StrSubstitutor"><code>StrSubstitutor</code> et al.</a> to allow property substitution in <code>String</code>-typed values.</p> </li> <li> -<p>A typical <code>log()</code> call triggers a chain of invocations through classes <code>Logger</code>, <code>LoggerConfig</code>, <code>AppenderControl</code>, <code>Appender</code>, and <code>AbstractManager</code> in order – this is depicted using green arrows in <a href="#architecture-diagram">An overview of major classes and their relation</a>.</p> +<p>A typical <code>log()</code> call triggers a chain of invocations through classes <code>Logger</code>, <code>LoggerConfig</code>, <code>AppenderControl</code>, <code>Appender</code>, and <code>AbstractManager</code> in order – this is depicted using green arrows in <a href="#architecture-diagram">Figure 1</a>.</p> </li> </ul> </div> @@ -542,7 +407,7 @@ It is associated with an active <a href="#Configuration"><code>Configuration</co <div class="content"> <img src="../_images/diag-fd71b342bbb89cd55a1ddb592976b9ac26b6348e.svg" alt="`LoggerContext` and other directly related classes"> </div> -<div class="title">Figure 1. <code>LoggerContext</code> and other directly related classes</div> +<div class="title">Figure 2. <code>LoggerContext</code> and other directly related classes</div> </div> <div class="paragraph"> <p>In most cases, applications have a single global <code>LoggerContext</code>. @@ -562,7 +427,7 @@ It models the configuration of all appenders, layouts, filters, loggers, and con <div class="content"> <img src="../_images/diag-5ffe377615be9b0375b26533bbf7b10507dc946b.svg" alt="`Configuration` and other directly related classes"> </div> -<div class="title">Figure 2. <code>Configuration</code> and other directly related classes</div> +<div class="title">Figure 3. <code>Configuration</code> and other directly related classes</div> </div> <div class="paragraph"> <p>Configuration of Log4j Core is typically done at application initialization. @@ -603,7 +468,7 @@ Threads that already started processing a log event will either:</p> <div class="content"> <img src="../_images/diag-01168003b98f120d2f0736e5172de8e1218f189e.svg" alt="Overview of the reconfiguration process"> </div> -<div class="title">Figure 3. Overview of the reconfiguration process</div> +<div class="title">Figure 4. Overview of the reconfiguration process</div> </div> </div> </div> @@ -621,7 +486,7 @@ It simply has a name and is associated with a <a href="#LoggerConfig"><code>Logg <div class="content"> <img src="../_images/diag-77a13b00749af95e3ed0eefd605a73f25d70973c.svg" alt="`Logger` and other directly related classes"> </div> -<div class="title">Figure 4. <code>Logger</code> and other directly related classes</div> +<div class="title">Figure 5. <code>Logger</code> and other directly related classes</div> </div> <div class="paragraph"> <p>The hierarchy between <a href="#LoggerConfig"><code>LoggerConfig</code></a>s, implies the very same hierarchy between <code>Logger</code>s too. @@ -663,7 +528,7 @@ A <code>LoggerConfig</code> essentially contains</p> <div class="content"> <img src="../_images/diag-73365a4d8197b5441a98fd1d661b07760da178be.svg" alt="`LoggerConfig` and other directly related classes"> </div> -<div class="title">Figure 5. <code>LoggerConfig</code> and other directly related classes</div> +<div class="title">Figure 6. <code>LoggerConfig</code> and other directly related classes</div> </div> <div class="sect2"> <h3 id="logger-hierarchy"><a class="anchor" href="#logger-hierarchy"></a>Logger hierarchy</h3> @@ -672,13 +537,13 @@ A <code>LoggerConfig</code> essentially contains</p> A <code>LoggerConfig</code> called <code>child</code> is said to be parented by <code>parent</code>, if <code>parent</code> has the <em>longest prefix match</em> on name. This match is case-sensitive and performed after tokenizing the name by splitting it from <code>.</code> (dot) characters. For a positive name match, tokens must match exhaustively. -See <a href="#logger-hiearchy-diagram">Figure 6</a> for an example.</p> +See <a href="#logger-hiearchy-diagram">Figure 7</a> for an example.</p> </div> <div id="logger-hiearchy-diagram" class="imageblock kroki"> <div class="content"> <img src="../_images/diag-892fd9dbd9ea6bece55c1d4078ae1de2edd5c689.svg" alt="Example hierarchy of loggers named `X`, `X.Y`, `X.Y.Z`, and `X.YZ`"> </div> -<div class="title">Figure 6. Example hierarchy of loggers named <code>X</code>, <code>X.Y</code>, <code>X.Y.Z</code>, and <code>X.YZ</code></div> +<div class="title">Figure 7. Example hierarchy of loggers named <code>X</code>, <code>X.Y</code>, <code>X.Y.Z</code>, and <code>X.YZ</code></div> </div> <div class="paragraph"> <p>If a <code>LoggerConfig</code> is not provided an explicit level, it will be inherited from its parent. @@ -924,7 +789,7 @@ That is, we will examine the effective level of a <code>Logger</code> in various <div class="content"> <img src="../_images/diag-581e854ee8ecdb00104bac5affda10a653d8f76d.svg" alt="`Filter` and other directly related classes"> </div> -<div class="title">Figure 7. <code>Filter</code> and other directly related classes</div> +<div class="title">Figure 8. <code>Filter</code> and other directly related classes</div> </div> <div class="paragraph"> <p>Refer to <a href="filters.html" class="xref page">Filters</a> for further information.</p> @@ -943,7 +808,7 @@ See <a href="appenders.html" class="xref page">Appenders</a> for the complete gu <div class="content"> <img src="../_images/diag-63d449f3bcd24cfa522a41f6e2f545416de30322.svg" alt="`Appender` and other directly related classes"> </div> -<div class="title">Figure 8. <code>Appender</code> and other directly related classes</div> +<div class="title">Figure 9. <code>Appender</code> and other directly related classes</div> </div> <div class="paragraph"> <p>An <code>Appender</code> can be added to a <a href="#Logger"><code>Logger</code></a> by calling the <a href="../javadoc/log4j-core/org/apache/logging/log4j/core/config/Configuration.html#addLoggerAppender(org.apache.logging.log4j.core.Logger,%20org.apache.logging.log4j.core.Appender)"><code>addLoggerAppender()</code></a> method of the current <a href="#Configuration"><code>Configuration</code></a>. @@ -970,13 +835,13 @@ However, if an ancestor of the <code>LoggerConfig</code> associated with <code>L <div class="content"> <img src="../_images/diag-58c484caf8cd616db4f1c7ed31b51c123b5859d4.svg" alt="Example hierarchy of logger configurations to demonstrate appender additivity"> </div> -<div class="title">Figure 9. Example hierarchy of logger configurations to demonstrate appender additivity</div> +<div class="title">Figure 10. Example hierarchy of logger configurations to demonstrate appender additivity</div> </div> <div class="paragraph"> -<p>In <a href="#appender-additivity-diagram">Figure 9</a>, the effective appenders for each logger configuration are as follows:</p> +<p>In <a href="#appender-additivity-diagram">Figure 10</a>, the effective appenders for each logger configuration are as follows:</p> </div> <table class="tableblock frame-all grid-all stretch"> -<caption class="title">Table 6. Effective appenders of logger configurations in <a href="#appender-additivity-diagram">Figure 9</a></caption> +<caption class="title">Table 6. Effective appenders of logger configurations in <a href="#appender-additivity-diagram">Figure 10</a></caption> <colgroup> <col style="width: 14.2857%;"> <col style="width: 14.2857%;"> @@ -1112,7 +977,7 @@ Since during a <a href="#reconfiguration">reconfiguration event</a> multiple ins <div class="content"> <img src="../_images/diag-232cdf1d44336897239fa03f6521cc730f38f32d.svg" alt="`Layout` and other directly related classes"> </div> -<div class="title">Figure 10. <code>Layout</code> and other directly related classes</div> +<div class="title">Figure 11. <code>Layout</code> and other directly related classes</div> </div> <div class="paragraph"> <p>Refer to <a href="layouts.html" class="xref page">Layouts</a> for details.</p> @@ -1131,7 +996,7 @@ It accepts an <a href="../javadoc/log4j-core/org/apache/logging/log4j/core/looku <div class="content"> <img src="../_images/diag-7a08e5a79432e9299cc0d9671bd39677be5618e8.svg" alt="`StrSubstitutor` et al. and other directly related classes"> </div> -<div class="title">Figure 11. <code>StrSubstitutor</code> et al. and other directly related classes</div> +<div class="title">Figure 12. <code>StrSubstitutor</code> et al. and other directly related classes</div> </div> <div class="paragraph"> <p>See <a href="configuration.html#property-substitution" class="xref page">how property substitution works</a> and <a href="lookups.html" class="xref page">the predefined lookups</a> for further information.</p> diff --git a/migrate-from-logback.html b/migrate-from-logback.html index c7aa37da98..bec2e787fa 100644 --- a/migrate-from-logback.html +++ b/migrate-from-logback.html @@ -409,63 +409,11 @@ For instance, <code>log4j-slf4j2-impl</code> <em>bridges</em> SLF4J calls to Log <div class="paragraph"> <p>To make things a little bit more tangible, consider the following visualization of a typical Log4j Core installation with bridges for an application:</p> </div> -<div class="literalblock kroki-error"> -<div class="title">Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges</div> +<div class="imageblock kroki"> <div class="content"> -<pre>@startuml - -frame "Compile time" { - [Application] --> [Log4j API] : logs to - - [Log4j API] #Cyan - - [SLF4J] #Cyan - - [Library 1] --> [SLF4J] : logs to - [Application] --> [Library 1] : uses - [Application] --> [Library 2] : uses - [Application] --> [Library 3] : uses -} - -frame Runtime { - - [Log4j Core] <.. [Log4j API] : is implemented by - [Log4j Core] <.. (log4j2.xml) : is provided to - [Log4j Core] #LightGreen - - [JPL-to-Log4j] ..> [Log4j Core] : forwards to - [JPL-to-Log4j] #Yellow - - [SLF4J-to-Log4j] ..> [Log4j Core] : forwards to - [SLF4J-to-Log4j] #Yellow - - [JUL-to-Log4j] ..> [Log4j Core] : forwards to - [JUL-to-Log4j] #Yellow - - frame JRE { - [JPL] #Cyan - [JUL] #Cyan - } - -} - -[Library 2] --> [JUL] : logs to -[Library 3] --> [JPL] : logs to - -[JPL] ..> [JPL-to-Log4j] : is implemented by -[JUL] ..> [JUL-to-Log4j] : is implemented by -[SLF4J] ..> [SLF4J-to-Log4j] : is implemented by - -legend top right - | <#LightGreen> | Logging implementation | - | <#Yellow> | Logging bridge | - | <#Cyan> | Logging API | - | <size:18><U+2192></size> | Compile-time usage | - | <size:18><U+21E2></size> | Runtime usage | -endlegend - -@enduml</pre> +<img src="_images/diag-a51b68065f249459078382aa4c61888857f01b2c.svg" alt="Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges"> </div> +<div class="title">Figure 1. Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges</div> </div> </div> </details> diff --git a/migrate-from-slf4j.html b/migrate-from-slf4j.html index 58d0c5f6df..84fc927277 100644 --- a/migrate-from-slf4j.html +++ b/migrate-from-slf4j.html @@ -409,63 +409,11 @@ For instance, <code>log4j-slf4j2-impl</code> <em>bridges</em> SLF4J calls to Log <div class="paragraph"> <p>To make things a little bit more tangible, consider the following visualization of a typical Log4j Core installation with bridges for an application:</p> </div> -<div class="literalblock kroki-error"> -<div class="title">Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges</div> +<div class="imageblock kroki"> <div class="content"> -<pre>@startuml - -frame "Compile time" { - [Application] --> [Log4j API] : logs to - - [Log4j API] #Cyan - - [SLF4J] #Cyan - - [Library 1] --> [SLF4J] : logs to - [Application] --> [Library 1] : uses - [Application] --> [Library 2] : uses - [Application] --> [Library 3] : uses -} - -frame Runtime { - - [Log4j Core] <.. [Log4j API] : is implemented by - [Log4j Core] <.. (log4j2.xml) : is provided to - [Log4j Core] #LightGreen - - [JPL-to-Log4j] ..> [Log4j Core] : forwards to - [JPL-to-Log4j] #Yellow - - [SLF4J-to-Log4j] ..> [Log4j Core] : forwards to - [SLF4J-to-Log4j] #Yellow - - [JUL-to-Log4j] ..> [Log4j Core] : forwards to - [JUL-to-Log4j] #Yellow - - frame JRE { - [JPL] #Cyan - [JUL] #Cyan - } - -} - -[Library 2] --> [JUL] : logs to -[Library 3] --> [JPL] : logs to - -[JPL] ..> [JPL-to-Log4j] : is implemented by -[JUL] ..> [JUL-to-Log4j] : is implemented by -[SLF4J] ..> [SLF4J-to-Log4j] : is implemented by - -legend top right - | <#LightGreen> | Logging implementation | - | <#Yellow> | Logging bridge | - | <#Cyan> | Logging API | - | <size:18><U+2192></size> | Compile-time usage | - | <size:18><U+21E2></size> | Runtime usage | -endlegend - -@enduml</pre> +<img src="_images/diag-a51b68065f249459078382aa4c61888857f01b2c.svg" alt="Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges"> </div> +<div class="title">Figure 1. Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges</div> </div> </div> </details> diff --git a/sitemap.xml b/sitemap.xml index 4f6d5211e3..39b422d372 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,238 +2,238 @@ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://logging.apache.org/log4j/2.x/components.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/development.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/download.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/faq.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/graalvm.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/hibernate.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/index.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/jakarta.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/javadoc.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/log4j-iostreams.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/log4j-jul.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/log4j-spring-boot.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/log4j-spring-cloud-config-client.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/log4j-to-jul.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/api.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/appenders.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/appenders/database.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/appenders/delegating.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/appenders/file.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/appenders/message-queue.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/appenders/network.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/appenders/rolling-file.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/architecture.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/async.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/compatibility.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/config-intro.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/configuration.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/customconfig.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/customloglevels.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/eventlogging.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/extending.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/filters.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/flowtracing.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/garbagefree.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/getting-started.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/implementation.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/index.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/installation.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/jmx.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/json-template-layout.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/layouts.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/logbuilder.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/lookups.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/markers.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/messages.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/pattern-layout.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/performance.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/plugins.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/scripts.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/simple-logger.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/status-logger.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/systemproperties.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/manual/thread-context.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/migrate-from-log4j1.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/migrate-from-logback.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/migrate-from-slf4j.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/plugin-reference.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/release-notes.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> <url> <loc>https://logging.apache.org/log4j/2.x/soa.html</loc> -<lastmod>2025-05-16T14:26:09.726Z</lastmod> +<lastmod>2025-05-16T20:46:19.469Z</lastmod> </url> </urlset>