logging-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rgo...@apache.org
Subject svn commit: r1033485 - /websites/production/logging/content/log4j/log4j-2.11.1/manual/usage.html
Date Sat, 04 Aug 2018 06:41:16 GMT
Author: rgoers
Date: Sat Aug  4 06:41:16 2018
New Revision: 1033485

Log:
Add page

Added:
    websites/production/logging/content/log4j/log4j-2.11.1/manual/usage.html

Added: websites/production/logging/content/log4j/log4j-2.11.1/manual/usage.html
==============================================================================
--- websites/production/logging/content/log4j/log4j-2.11.1/manual/usage.html (added)
+++ websites/production/logging/content/log4j/log4j-2.11.1/manual/usage.html Sat Aug  4 06:41:16
2018
@@ -0,0 +1,623 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<!-- Generated by Apache Maven Doxia at 2018-08-03 -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+		<title>Log4j &#x2013; Log4j 2 Architecture - Apache Log4j 2</title>
+		<link rel="stylesheet" href="../css/bootstrap.min.css" type="text/css" />
+		<link rel="stylesheet" href="../css/site.css" type="text/css" />
+		<script type="text/javascript" src="../js/jquery.min.js"></script>
+		<script type="text/javascript" src="../js/bootstrap.min.js"></script>
+		<script type="text/javascript" src="../js/prettify.min.js"></script>
+		<script type="text/javascript" src="../js/site.js"></script>
+			<meta name="author" content="Ralph Goers" />
+		<meta name="Date-Revision-yyyymmdd" content="20180803" />
+		<meta http-equiv="Content-Language" content="en" />
+		
+				</head>
+	<body class="composite">
+		<a href="https://logging.apache.org/">
+			<img class="logo-left" src="../images/ls-logo.jpg" alt="Apache logging services logo"
/>
+		</a>
+		<img class="logo-right" src="../images/logo.png" alt="Apache log4j logo" />
+		<div class="clear"></div>
+
+		<div class="navbar">
+			<div class="navbar-inner">
+				<div class="container-fluid">
+					<a class="brand" href="https://logging.apache.org/log4j/2.x/">Apache Log4j 2 &trade;</a>
+						<ul class="nav">
+						<li>
+					
+				
+				<a href="https://cwiki.apache.org/confluence/display/LOGGING/Log4j" class="external"
target="_blank" title="Logging Wiki">Logging Wiki</a>
+			</li>
+					<li>
+					
+				
+				<a href="https://www.apache.org/" class="external" target="_blank" title="Apache">Apache</a>
+			</li>
+					<li>
+									<a href="../../../" title="Logging Services">Logging Services</a>
+			</li>
+					<li>
+					
+				
+				<a href="https://analysis.apache.org/dashboard/index/org.apache.logging.log4j:log4j"
class="external" target="_blank" title="Sonar">Sonar</a>
+			</li>
+					<li>
+					
+				
+				<a href="https://github.com/apache/logging-log4j2" class="external" target="_blank"
title="GitHub">GitHub</a>
+			</li>
+		</ul>
+				</div>
+			</div>
+		</div>
+
+		<div class="container-fluid">
+			<table class="layout-table">
+				<tr>
+					<td class="sidebar">
+						<div class="well sidebar-nav">
+										<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-home"></i>Apache Log4j™
2</li>
+																						<li class="none">
+									<a href="../index.html" title="About">About</a>
+					</li>
+ 																<li class="none">
+									<a href="../download.html" title="Download">Download</a>
+					</li>
+ 																																																																				<li class="collapsed">
+									<a href="../javadoc.html" title="Javadoc">Javadoc</a>
+										</li>
+ 																																																																																							
							<li class="collapsed">
+									<a href="../maven-artifacts.html" title="Maven, Ivy, Gradle Artifacts">Maven,
Ivy, Gradle Artifacts</a>
+										</li>
+ 																<li class="none">
+									<a href="../runtime-dependencies.html" title="Runtime Dependencies">Runtime
Dependencies</a>
+					</li>
+ 																<li class="none">
+									<a href="../changelog.html" title="Changelog">Changelog</a>
+					</li>
+ 																<li class="none">
+									<a href="../faq.html" title="FAQ">FAQ</a>
+					</li>
+ 																																																																																							
																									<li class="collapsed">
+									<a href="../performance.html" title="Performance">Performance</a>
+										</li>
+ 																<li class="none">
+									<a href="../articles.html" title="Articles and Tutorials">Articles and Tutorials</a>
+					</li>
+ 																<li class="none">
+									<a href="../thanks.html" title="Thanks">Thanks</a>
+					</li>
+ 								</ul>
+			<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-pencil"></i>For Contributors</li>
+																						<li class="none">
+									<a href="../build.html" title="Building Log4j from Source">Building Log4j
from Source</a>
+					</li>
+ 																<li class="none">
+									<a href="../guidelines.html" title="Guidelines">Guidelines</a>
+					</li>
+ 																<li class="none">
+									<a href="../javastyle.html" title="Style Guide">Style Guide</a>
+					</li>
+ 								</ul>
+			<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-book"></i>Manual</li>
+																						<li class="none">
+									<a href="../manual/index.html" title="Introduction">Introduction</a>
+					</li>
+ 																<li class="none">
+									<a href="../manual/architecture.html" title="Architecture">Architecture</a>
+					</li>
+ 																<li class="none">
+									<a href="../manual/migration.html" title="Log4j 1.x Migration">Log4j 1.x Migration</a>
+					</li>
+ 																																																																													<li class="collapsed">
+									<a href="../manual/api.html" title="Java API">Java API</a>
+										</li>
+ 																<li class="none">
+									<a href="../manual/scala-api.html" title="Scala API">Scala API</a>
+					</li>
+ 																																																																																							
																																																																																									
																																		<li class="collapsed">
+									<a href="../manual/configuration.html" title="Configuration">Configuration</a>
+										</li>
+ 																																																					<li class="expanded active">
+									<a href="../manual/usage.html" title="Usage">Usage</a>
+										<ul>
+																			<li class="none">
+									<a href="../manual/usage.html#StaticVsNonStatic" title="Static vs non-Static
Loggers">Static vs non-Static Loggers</a>
+					</li>
+ 																				<li class="none">
+									<a href="../manual/usage.html#LoggerVsClass" title="Logger Name vs Class Name">Logger
Name vs Class Name</a>
+					</li>
+ 										</ul>
+							</li>
+ 																																																																																						<li
class="collapsed">
+									<a href="../manual/webapp.html" title="Web Applications and JSPs">Web Applications
and JSPs</a>
+										</li>
+ 																																																																																							
																																																				<li class="collapsed">
+									<a href="../manual/lookups.html" title="Lookups">Lookups</a>
+										</li>
+ 																																																																																							
																																																																																									
																																																																																									
																									<li class="collapsed">
+									<a href="../manual/appenders.html" title="Appenders">Appenders</a>
+										</li>
+ 																																																																																							
																																											<li class="collapsed">
+									<a href="../manual/layouts.html" title="Layouts">Layouts</a>
+										</li>
+ 																																																																																							
																																											<li class="collapsed">
+									<a href="../manual/filters.html" title="Filters">Filters</a>
+										</li>
+ 																																																																																						<li
class="collapsed">
+									<a href="../manual/async.html" title="Async Loggers">Async Loggers</a>
+										</li>
+ 																																																																																							
																<li class="collapsed">
+									<a href="../manual/garbagefree.html" title="Garbage-free Logging">Garbage-free
Logging</a>
+										</li>
+ 																<li class="none">
+									<a href="../manual/jmx.html" title="JMX">JMX</a>
+					</li>
+ 																<li class="none">
+									<a href="../manual/logsep.html" title="Logging Separation">Logging Separation</a>
+					</li>
+ 																																																																																							
																																																																						<li class="collapsed">
+									<a href="../manual/extending.html" title="Extending Log4j">Extending Log4j</a>
+										</li>
+ 																																																																																						<li
class="collapsed">
+									<a href="../manual/plugins.html" title="Plugins">Plugins</a>
+										</li>
+ 																																																																																							
							<li class="collapsed">
+									<a href="../manual/customconfig.html" title="Programmatic Log4j Configuration">Programmatic
Log4j Configuration</a>
+										</li>
+ 																																																																																						<li
class="collapsed">
+									<a href="../manual/customloglevels.html" title="Custom Log Levels">Custom
Log Levels</a>
+										</li>
+ 								</ul>
+			<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-tags"></i>Related
Projects</li>
+																						<li class="none">
+					
+				
+				<a href="http://logging.apache.org/log4j/scala/index.html" class="external" target="_blank"
title="Log4j-Scala">Log4j-Scala</a>
+					</li>
+ 								</ul>
+			<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-tags"></i>Legacy</li>
+																						<li class="none">
+					
+				
+				<a href="http://logging.apache.org/log4j/1.2/" class="external" target="_blank" title="Log4j
1.2">Log4j 1.2</a>
+					</li>
+ 																<li class="none">
+					
+				
+				<a href="http://logging.apache.org/log4j/log4j-2.3/" class="external" target="_blank"
title="Log4j 2.3">Log4j 2.3</a>
+					</li>
+ 								</ul>
+			<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-cog"></i>Components</li>
+																						<li class="none">
+									<a href="../log4j-api/index.html" title="API">API</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-core/index.html" title="Implementation">Implementation</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-jcl/index.html" title="Commons Logging Bridge">Commons Logging
Bridge</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-1.2-api/index.html" title="Log4j 1.2 API">Log4j 1.2 API</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-slf4j-impl/index.html" title="SLF4J Binding">SLF4J Binding</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-jul/index.html" title="JUL Adapter">JUL Adapter</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-to-slf4j/index.html" title="Log4j 2 to SLF4J Adapter">Log4j
2 to SLF4J Adapter</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-flume-ng/index.html" title="Apache Flume Appender">Apache
Flume Appender</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-taglib/index.html" title="Log4j Tag Library">Log4j Tag Library</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-jmx-gui/index.html" title="Log4j JMX GUI">Log4j JMX GUI</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-web/index.html" title="Log4j Web Application Support">Log4j
Web Application Support</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-appserver/index.html" title="Log4j Application Server Integration">Log4j
Application Server Integration</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-couchdb/index.html" title="Log4j CouchDB appender">Log4j
CouchDB appender</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-mongodb2/index.html" title="Log4j MongoDB2 appender">Log4j
MongoDB2 appender</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-mongodb3/index.html" title="Log4j MongoDB3 appender">Log4j
MongoDB3 appender</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-cassandra/index.html" title="Log4j Cassandra appender">Log4j
Cassandra appender</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-iostreams/index.html" title="Log4j IO Streams">Log4j IO
Streams</a>
+					</li>
+ 																<li class="none">
+									<a href="../log4j-liquibase/index.html" title="Log4j Liquibase Binding">Log4j
Liquibase Binding</a>
+					</li>
+ 								</ul>
+			<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-info-sign"></i>Project
Information</li>
+																						<li class="none">
+									<a href="../dependency-convergence.html" title="Dependency Convergence">Dependency
Convergence</a>
+					</li>
+ 																<li class="none">
+									<a href="../dependency-management.html" title="Dependency Management">Dependency
Management</a>
+					</li>
+ 																<li class="none">
+									<a href="../team-list.html" title="Project Team">Project Team</a>
+					</li>
+ 																<li class="none">
+									<a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
+					</li>
+ 																<li class="none">
+									<a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
+					</li>
+ 																<li class="none">
+									<a href="../license.html" title="Project License">Project License</a>
+					</li>
+ 																<li class="none">
+									<a href="../source-repository.html" title="Source Repository">Source Repository</a>
+					</li>
+ 																<li class="none">
+									<a href="../project-summary.html" title="Project Summary">Project Summary</a>
+					</li>
+ 								</ul>
+			<ul class="nav nav-list">
+		 											 <li class="nav-header"><i class="icon-cog"></i>Project Reports</li>
+																						<li class="none">
+									<a href="../changes-report.html" title="Changes Report">Changes Report</a>
+					</li>
+ 																<li class="none">
+									<a href="../jira-report.html" title="JIRA Report">JIRA Report</a>
+					</li>
+ 																<li class="none">
+									<a href="../rat-report.html" title="RAT Report">RAT Report</a>
+					</li>
+ 								</ul>
+							</div>
+						<div id="poweredBy">
+															<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+				<img class="poweredBy" alt="Built by Maven" src="../images/maven-feather.png" />
+			</a>
+									</div>
+					</td>
+					<td class="content">
+						<!-- Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License. -->
+  
+    <div class="section">
+<h2><a name="Usage"></a>Usage</h2>
+      <a name="StaticVsNonStatic"></a>
+      
+<div class="section">
+<h3><a name="Static_vs_Non-Static_Loggers"></a>Static vs Non-Static Loggers</h3>
+        
+<p>As with any variable in Java, Loggers may be declared as static variables or class
member variables. However,
+        there are a few factors to consider when choosing to delare a logger as static vs
non-static. Generally, it
+        is better to declare Loggers as static.
+        </p>
+<ol style="list-style-type: decimal">
+          
+<li>
+            Instantiation of a new Logger is a fairly expensive operation when using the
default ContextSelector,
+            <a href="../log4j-core/apidocs/org/apache/logging/log4j/core/selector/ClassLoaderContextSelector.html"
class="javadoc">ClassLoaderContextSelector</a>.
+            When the Logger is created the <tt>ClassLoaderContextSelector</tt>
will locate the ClassLoader for the Class the Logger
+            is associated with and add the Logger to the LoggerContext associated with that
ClassLoader.
+          </li>
+          
+<li>
+            Once a Logger is created it will not be deleted until the <tt>LoggerContext</tt>
it is associated with
+            is deleted. Typically, this will only happen when the application is shut down
or un-deployed. Each call
+            to getLogger with the same logger name will return the same Logger instance.
Thus, there is very little
+            difference between a static or non-static Logger.
+          </li>
+          
+<li>
+            There is no behavioral difference between a static and non-static Logger. Both
will have the Logger name
+            assigned when they are created, which usually will be the name of the class they
are associated with. See
+            the discussion below on logger names vs class names and the example for more
information.
+          </li>
+        </ol>
+         
+      </div>
+      <a name="LoggerVsClass"></a>
+      
+<div class="section">
+<h3><a name="Logging_the_Logger_name_vs_the_Class_name"></a>Logging the
Logger name vs the Class name</h3>
+        
+<p>
+          The logger name of a Logger is specified when the Logger is created. When a log
method is called the
+          class name value in the log event will reflect the name of the class the log method
was called from, which is
+          not necessarily the same as the class that created the Logger. The following example
illustrations this.
+        </p>
+
+        
+<p>The base class creates a static Logger and a logger variable that is initialized
as that same Logger.
+          It has two methods that perform logging, once that uses the static logger and one
that uses a Logger that
+          can be overridden.
+        </p>
+
+
+
+<div>
+<pre class="prettyprint">
+  package org.apache.logging;
+
+  import org.apache.logging.log4j.LogManager;
+  import org.apache.logging.log4j.Logger;
+  import org.apache.logging.log4j.Marker;
+
+  /**
+  *
+  */
+  public abstract class MySuperClass {
+
+      // The name of this Logger will be &quot;org.apache.logging.MySuperClass&quot;
+      protected static final Logger LOGGER = LogManager.getLogger();
+
+      private Logger logger = LOGGER;
+
+      protected Logger getLogger() {
+          return logger;
+      }
+
+      protected void setLogger(Logger logger) {
+          this.logger = logger;
+      }
+
+
+      protected void demoLog(Marker marker) {
+          logger.debug(marker,&quot;MySuperClass log message&quot;);
+      }
+  }
+</pre></div>
+
+        
+<p>
+          This class extends the base class. It provides its own logger and has two methods,
one that uses the
+          logger in this class and one that uses the static logger from the base class.
+        </p>
+
+
+<div>
+<pre class="prettyprint">
+  package org.apache.logging;
+
+  import org.apache.logging.log4j.LogManager;
+  import org.apache.logging.log4j.Logger;
+  import org.apache.logging.log4j.Marker;
+
+  /**
+  *
+  */
+  public class MyClass extends MySuperClass {
+
+      // The name of this Logge will be &quot;org.apache.logging.MyClass&quot;
+      public Logger logger = LogManager.getLogger();
+
+      public void log1(Marker marker) {
+          logger.debug(marker,&quot;MyClass logger message&quot;);
+      }
+
+      public void log2(Marker marker) {
+          LOGGER.debug(marker,&quot;MySuperClass logger message from MyClass&quot;);
+      }
+  }
+</pre></div>
+      
+<p>
+        The application exercises all the logging methods four times. The first two times
the Logger in the base
+        class is set to the static Logger. The second two times the Logger in the base class
is set to use the
+        Logger in the subclass. In the first and third invocation of each method a null Marker
is passed. In the
+        second and fourth a Marker named &quot;CLASS&quot; is passed.
+      </p>
+
+
+<div>
+<pre class="prettyprint">
+  package org.apache.logging;
+
+  import org.apache.logging.log4j.Marker;
+  import org.apache.logging.log4j.MarkerManager;
+
+  public class App {
+
+      public static void main( String[] args ) {
+          Marker marker = MarkerManager.getMarker(&quot;CLASS&quot;);
+          MyClass myclass = new MyClass();
+
+          System.out.println(&quot;------- MySuperClass Logger ----------&quot;);
+          myclass.demoLog(null);
+          myclass.demoLog(marker);
+          myclass.log1(null);
+          myclass.log1(marker);
+          myclass.log2(null);
+          myclass.log2(marker);
+
+          myclass.setLogger(myclass.logger);
+
+          System.out.println(&quot;------- MySuperClass Logger set to MyClass Logger
----------&quot;);
+          myclass.demoLog(null);
+          myclass.demoLog(marker);
+          myclass.log1(null);
+          myclass.log1(marker);
+          myclass.log2(null);
+          myclass.log2(marker);
+      }
+  }</pre></div>
+
+      
+<p>
+        The configuration takes advantage of Log4j's ability to select a pattern based upon
attributes of the log event.
+        In this case %C, the class name pattern, is used when the CLASS Marker is present,
and %c, the logger name
+        is used when the CLASS marker is not present.
+      </p>
+
+<div>
+<pre class="prettyprint linenums">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;Configuration status=&quot;error&quot;&gt;
+  &lt;Appenders&gt;
+    &lt;Console name=&quot;Console&quot; target=&quot;SYSTEM_OUT&quot;&gt;
+      &lt;PatternLayout&gt;
+        &lt;MarkerPatternSelector defaultPattern=&quot;%sn. Logger name %c %msg%n&quot;&gt;
+          &lt;PatternMatch key=&quot;CLASS&quot; pattern=&quot;%sn. Class
name %C %msg%n&quot;/&gt;
+        &lt;/MarkerPatternSelector&gt;
+      &lt;/PatternLayout&gt;
+    &lt;/Console&gt;
+  &lt;/Appenders&gt;
+  &lt;Loggers&gt;
+    &lt;Root level=&quot;TRACE&quot;&gt;
+      &lt;AppenderRef ref=&quot;Console&quot; /&gt;
+    &lt;/Root&gt;
+  &lt;/Loggers&gt;
+&lt;/Configuration&gt;</pre></div>
+
+        
+<p>
+          The output below illustrates the difference between using the Logger name and the
Class name in the pattern. All
+          the odd numbered items print the name of the logger (%c) while all the even numbered
items print the
+          name of the class that called the logging method (%C). The numbers in the description
of the outcomes in the
+          following list match the corresponding numbers shown in the output.
+          </p>
+<ol style="list-style-type: decimal">
+            
+<li>Logging is performed in the base class using the static logger with the Logger
name pattern. The
+            logger name matches the name of the base class.</li>
+            
+<li>Logging is performed in the base class using the static logger with the Class name
pattern. Although
+              the method was called against the MyClass instance it is implemented in MySuperClass
so that is what
+              appears.</li>
+            
+<li>Logging is performed in the subclass using the logger in the subclass, so the name
of the
+              subclass is printed as the logger name.</li>
+            
+<li>Logging is performed in the subclass using the logger in the subclass, so the name
of the subclass
+              is printed since that is where the method exists.</li>
+            
+<li>Logging is performed in the subclass with the static logger of the base class.
Thus the name
+              of the base class Logger is printed.</li>
+            
+<li>Logging is performed in the subclass with the static logger of the base class,
so the name
+              of the subclass is printed since that is where the method performing the logging
exists.</li>
+
+            
+<li>Logging is performed in the base class using the logger of the subclass. The
+              logger name matches the name of the subclass and so is printed.</li>
+            
+<li>Logging is performed in the base class using the logger of the subclass. Although
+              the method was called against the MyClass instance it is implemented in MySuperClass
so that is what
+              appears as the class name.</li>
+            
+<li>Logging is performed in the subclass using the logger in the subclass, so the name
of the
+              subclass is printed as the logger name.</li>
+            
+<li>Logging is performed in the subclass using the logger in the subclass, so the name
of the subclass
+              is printed since that is where the method exists.</li>
+            
+<li>Logging is performed in the subclass with the logger of the base class. Thus the
name
+              of the base class Logger is printed.</li>
+            
+<li>Logging is performed in the subclass with the static logger of the base class,
so the name
+              of the subclass is printed since that is where the method performing the logging
exists.</li>
+          </ol>
+        
+
+<div>
+<pre class="prettyprint">
+  ------- MySuperClass Logger ----------
+  1. Logger name org.apache.logging.MySuperClass MySuperClass log message
+  2. Class name org.apache.logging.MySuperClass MySuperClass log message
+  3. Logger name org.apache.logging.MyClass MyClass logger message
+  4. Class name org.apache.logging.MyClass MyClass logger message
+  5. Logger name org.apache.logging.MySuperClass MySuperClass logger message from MyClass
+  6. Class name org.apache.logging.MyClass MySuperClass logger message from MyClass
+  ------- MySuperClass Logger set to MyClass Logger ----------
+  7. Logger name org.apache.logging.MyClass MySuperClass log message
+  8. Class name org.apache.logging.MySuperClass MySuperClass log message
+  9. Logger name org.apache.logging.MyClass MyClass logger message
+  10. Class name org.apache.logging.MyClass MyClass logger message
+  11. Logger name org.apache.logging.MySuperClass MySuperClass logger message from MyClass
+  12. Class name org.apache.logging.MyClass MySuperClass logger message from MyClass
+</pre></div>
+
+        
+<p>
+          In the example above there are two Loggers declared. One is static and one is non-static.
When looking at
+          the results it is clear that the outcomes would be exactly the same regardless
of whether how the loggers
+          are declared. The name of the logger will always originate from the class in which
it is created and the
+          Class name in each log event will always reflect the Class from which the logging
method was called.
+        </p>
+        
+<p>
+          It should be noted that there is a substantial performance penalty for printing
the location information
+          (class name, method name, and line number). If the method name and line number
are not important it is
+          usually better to make sure that each class has its own Logger so the logger name
accurately reflects the
+          class performing the logging.
+        </p>
+
+
+      </div>
+
+    </div>
+  
+
+					</td>
+				</tr>
+			</table>
+		</div>
+
+		<div class="footer">
+							<p>Copyright &copy; 1999-2018 <a class="external" href="https://www.apache.org/">The
Apache Software Foundation</a>. All Rights Reserved.</p>
+				<p>Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, and the
Apache Logging project logo are trademarks of The Apache Software Foundation.</p>
+				<p>Site powered by <a class="external" href="http://getbootstrap.com/">Twitter
Bootstrap</a>. Icons from <a class="external" href="http://glyphicons.com/">Glyphicons
Free</a>.</p>
+			</div>
+		</div>
+	</body>
+</html>



Mime
View raw message