blob: 2398bfea9c8deae7f96406f28d9729d7dc340b8a [file] [log] [blame]
<!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 Feb 9, 2014 -->
<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>CPD Results - Apache Log4j Core</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="Date-Revision-yyyymmdd" content="20140209" />
<meta http-equiv="Content-Language" content="en" />
</head>
<body class="composite">
<img class="logo-left" src="./images/ls-logo.jpg" alt="Apache logging services logo" />
<img class="logo-right" src="./images/logo.jpg" alt="Apache log4j logo" />
<div class="clear"></div>
<div class="navbar">
<div class="navbar-inner">
<div class="container-fluid">
<a class="brand" href="http://logging.apache.org/log4j/2.x/log4j-core/">Apache Log4j Core &trade;</a>
<ul class="nav">
<li>
<a href="http://wiki.apache.org/logging" class="external" target="_blank" title="Logging Wiki">Logging Wiki</a>
</li>
<li>
<a href="http://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="../index.html" title="Log4j">Log4j</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="none">
<a href="../maven-artifacts.html" title="Maven and Ivy">Maven and Ivy</a>
</li>
<li class="none">
<a href="../build.html" title="Build">Build</a>
</li>
<li class="none">
<a href="../changelog.html" title="Changelog">Changelog</a>
</li>
<li class="collapsed">
<a href="../javadoc.html" title="Javadoc">Javadoc</a>
</li>
<li class="none">
<a href="../faq.html" title="FAQ">FAQ</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="API">API</a>
</li>
<li class="collapsed">
<a href="../manual/configuration.html" title="Configuration">Configuration</a>
</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/plugins.html" title="Plugins">Plugins</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="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>
</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 active">
<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-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 NG Appender">Apache Flume NG 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>
</ul>
<ul class="nav nav-list">
<li class="nav-header">Component Documentation</li>
<li class="collapsed">
<a href="project-info.html" title="Component Information">Component Information</a>
</li>
<li class="expanded">
<a href="project-reports.html" title="Component Reports">Component Reports</a>
<ul>
<li class="none">
<a href="jira-report.html" title="JIRA Report">JIRA Report</a>
</li>
<li class="none">
<a href="surefire-report.html" title="Surefire Report">Surefire Report</a>
</li>
<li class="none">
<a href="rat-report.html" title="Rat Report">Rat Report</a>
</li>
<li class="none">
<a href="checkstyle.html" title="Checkstyle">Checkstyle</a>
</li>
<li class="none">
<a href="apidocs/index.html" title="JavaDocs">JavaDocs</a>
</li>
<li class="none">
<a href="findbugs.html" title="FindBugs Report">FindBugs Report</a>
</li>
<li class="none">
<a href="xref/index.html" title="Source Xref">Source Xref</a>
</li>
<li class="none active">
<a href="cpd.html" title="CPD Report">CPD Report</a>
</li>
<li class="none">
<a href="pmd.html" title="PMD Report">PMD Report</a>
</li>
</ul>
</li>
</ul>
<ul class="nav nav-list">
<li class="nav-header"><i class="icon-info-sign"></i>Log4j Project Information</li>
<li class="none">
<a href="../dependencies.html" title="Dependencies">Dependencies</a>
</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>Log4j 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="../surefire-report.html" title="Surefire Report">Surefire 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">
<div class="section"><h2>CPD Results<a name="CPD_Results"></a></h2><p>The following document contains the results of PMD's <a class="externalLink" href="http://pmd.sourceforge.net/cpd.html">CPD</a> 5.0.2.</p></div><div class="section"><h2>Duplications<a name="Duplications"></a></h2><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/core/net/SocketServer.java</td><td><a href="./xref/org/apache/logging/log4j/core/net/SocketServer.html#198">198</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/net/UDPSocketServer.java</td><td><a href="./xref/org/apache/logging/log4j/core/net/UDPSocketServer.html#144">144</a></td></tr><tr class="b"><td colspan='2'><div><pre> handlers.remove(Long.valueOf(getId()));
}
}
}
/**
* Factory that creates a Configuration for the server.
*/
private static class ServerConfigurationFactory extends XMLConfigurationFactory {
private final String path;
public ServerConfigurationFactory(final String path) {
this.path = path;
}
@Override
public Configuration getConfiguration(final String name, final URI configLocation) {
if (path != null &amp;&amp; path.length() &gt; 0) {
File file = null;
ConfigurationSource source = null;
try {
file = new File(path);
final FileInputStream is = new FileInputStream(file);
source = new ConfigurationSource(is, file);
} catch (final FileNotFoundException ex) {
// Ignore this error
}
if (source == null) {
try {
final URL url = new URL(path);
source = new ConfigurationSource(url.openStream(), path);
} catch (final MalformedURLException mue) {
// Ignore this error
} catch (final IOException ioe) {
// Ignore this error
}
}
try {
if (source != null) {
return new XMLConfiguration(source);
}
} catch (final Exception ex) {
// Ignore this error.
}
System.err.println(&quot;Unable to process configuration at &quot; + path + &quot;, using default.&quot;);
}
return super.getConfiguration(name, configLocation);
}
}
}</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/core/appender/SyslogAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/SyslogAppender.html#93">93</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/appender/TLSSyslogAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/TLSSyslogAppender.html#87">87</a></td></tr><tr class="b"><td colspan='2'><div><pre> @PluginAttribute(&quot;protocol&quot;) final String protocol,
@PluginAttribute(&quot;reconnectionDelay&quot;) final String delay,
@PluginAttribute(&quot;immediateFail&quot;) final String immediateFail,
@PluginAttribute(&quot;name&quot;) final String name,
@PluginAttribute(&quot;immediateFlush&quot;) final String immediateFlush,
@PluginAttribute(&quot;ignoreExceptions&quot;) final String ignore,
@PluginAttribute(&quot;facility&quot;) final String facility,
@PluginAttribute(&quot;id&quot;) final String id,
@PluginAttribute(&quot;enterpriseNumber&quot;) final String ein,
@PluginAttribute(&quot;includeMDC&quot;) final String includeMDC,
@PluginAttribute(&quot;mdcId&quot;) final String mdcId,
@PluginAttribute(&quot;mdcPrefix&quot;) final String mdcPrefix,
@PluginAttribute(&quot;eventPrefix&quot;) final String eventPrefix,
@PluginAttribute(&quot;newLine&quot;) final String includeNL,
@PluginAttribute(&quot;newLineEscape&quot;) final String escapeNL,
@PluginAttribute(&quot;appName&quot;) final String appName,
@PluginAttribute(&quot;messageId&quot;) final String msgId,
@PluginAttribute(&quot;mdcExcludes&quot;) final String excludes,
@PluginAttribute(&quot;mdcIncludes&quot;) final String includes,
@PluginAttribute(&quot;mdcRequired&quot;) final String required,
@PluginAttribute(&quot;format&quot;) final String format,
@PluginElement(&quot;Filters&quot;) final Filter filter,</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/core/async/AsyncLoggerConfig.java</td><td><a href="./xref/org/apache/logging/log4j/core/async/AsyncLoggerConfig.html#144">144</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/config/LoggerConfig.java</td><td><a href="./xref/org/apache/logging/log4j/core/config/LoggerConfig.html#433">433</a></td></tr><tr class="b"><td colspan='2'><div><pre> }
/**
* Factory method to create a LoggerConfig.
*
* @param additivity True if additive, false otherwise.
* @param levelName The Level to be associated with the Logger.
* @param loggerName The name of the Logger.
* @param includeLocation &quot;true&quot; if location should be passed downstream
* @param refs An array of Appender names.
* @param properties Properties to pass to the Logger.
* @param config The Configuration.
* @param filter A Filter.
* @return A new LoggerConfig.
*/
@PluginFactory
public static LoggerConfig createLogger(
@PluginAttribute(&quot;additivity&quot;) final String additivity,
@PluginAttribute(&quot;level&quot;) final String levelName,
@PluginAttribute(&quot;name&quot;) final String loggerName,
@PluginAttribute(&quot;includeLocation&quot;) final String includeLocation,
@PluginElement(&quot;AppenderRef&quot;) final AppenderRef[] refs,
@PluginElement(&quot;Properties&quot;) final Property[] properties,
@PluginConfiguration final Configuration config,
@PluginElement(&quot;Filters&quot;) final Filter filter) {
if (loggerName == null) {
LOGGER.error(&quot;Loggers cannot be configured without a name&quot;);
return null;
}
final List&lt;AppenderRef&gt; appenderRefs = Arrays.asList(refs);
Level level;
try {
level = Level.toLevel(levelName, Level.ERROR);
} catch (final Exception ex) {
LOGGER.error(
&quot;Invalid Log level specified: {}. Defaulting to Error&quot;,
levelName);
level = Level.ERROR;
}
final String name = loggerName.equals(&quot;root&quot;) ? &quot;&quot; : loggerName;
final boolean additive = Booleans.parseBoolean(additivity, true);
return new AsyncLoggerConfig(name, appenderRefs, filter, level,</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/core/config/JSONConfiguration.java</td><td><a href="./xref/org/apache/logging/log4j/core/config/JSONConfiguration.html#92">92</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/config/XMLConfiguration.java</td><td><a href="./xref/org/apache/logging/log4j/core/config/XMLConfiguration.html#161">161</a></td></tr><tr class="b"><td colspan='2'><div><pre> final String dest = entry.getValue();
if (dest != null) {
if (dest.equalsIgnoreCase(&quot;err&quot;)) {
stream = System.err;
} else {
try {
final File destFile = FileUtils.fileFromURI(FileUtils.getCorrectedFilePathUri(dest));
final String enc = Charset.defaultCharset().name();
stream = new PrintStream(new FileOutputStream(destFile), true, enc);
} catch (final URISyntaxException use) {
System.err.println(&quot;Unable to write to &quot; + dest + &quot;. Writing to stdout&quot;);
}
}
}
} else if (&quot;shutdownHook&quot;.equalsIgnoreCase(entry.getKey())) {
String hook = getStrSubstitutor().replace(entry.getValue());
isShutdownHookEnabled = !hook.equalsIgnoreCase(&quot;disable&quot;);
} else if (&quot;verbose&quot;.equalsIgnoreCase(entry.getKey())) {
verbose = Boolean.parseBoolean(getStrSubstitutor().replace(entry.getValue()));
} else if (&quot;packages&quot;.equalsIgnoreCase(entry.getKey())) {</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/core/appender/RollingFileAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/RollingFileAppender.html#53">53</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.html#54">54</a></td></tr><tr class="b"><td colspan='2'><div><pre> private RollingFileAppender(final String name, final Layout&lt;? extends Serializable&gt; layout, final Filter filter,
final RollingFileManager manager, final String fileName,
final String filePattern, final boolean ignoreExceptions, final boolean immediateFlush,
final Advertiser advertiser) {
super(name, layout, filter, ignoreExceptions, immediateFlush, manager);
if (advertiser != null) {
final Map&lt;String, String&gt; configuration = new HashMap&lt;String, String&gt;(layout.getContentFormat());
configuration.put(&quot;contentType&quot;, layout.getContentType());
configuration.put(&quot;name&quot;, name);
advertisement = advertiser.advertise(configuration);
}
this.fileName = fileName;
this.filePattern = filePattern;
this.advertiser = advertiser;
}
@Override
public void stop() {
super.stop();
if (advertiser != null) {
advertiser.unadvertise(advertisement);
}
}
/**
* Write the log entry rolling over the file when required.
* @param event The LogEvent.
*/
@Override
public void append(final LogEvent event) {</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java</td><td><a href="./xref/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.html#72">72</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/pattern/RootThrowablePatternConverter.java</td><td><a href="./xref/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverter.html#72">72</a></td></tr><tr class="b"><td colspan='2'><div><pre> final String trace = proxy.getExtendedStackTrace(options.getPackages());
final int len = toAppendTo.length();
if (len &gt; 0 &amp;&amp; !Character.isWhitespace(toAppendTo.charAt(len - 1))) {
toAppendTo.append(&quot; &quot;);
}
if (!options.allLines() || !Constants.LINE_SEP.equals(options.getSeparator())) {
final StringBuilder sb = new StringBuilder();
final String[] array = trace.split(Constants.LINE_SEP);
final int limit = options.minLines(array.length) - 1;
for (int i = 0; i &lt;= limit; ++i) {
sb.append(array[i]);
if (i &lt; limit) {
sb.append(options.getSeparator());
}
}
toAppendTo.append(sb.toString());
} else {
toAppendTo.append(trace);
}
}
}
}</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/core/filter/MapFilter.java</td><td><a href="./xref/org/apache/logging/log4j/core/filter/MapFilter.html#125">125</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/filter/StructuredDataFilter.java</td><td><a href="./xref/org/apache/logging/log4j/core/filter/StructuredDataFilter.html#110">110</a></td></tr><tr class="b"><td>org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java</td><td><a href="./xref/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.html#120">120</a></td></tr><tr class="a"><td colspan='2'><div><pre> LOGGER.error(&quot;keys and values must be specified for the MapFilter&quot;);
return null;
}
final Map&lt;String, List&lt;String&gt;&gt; map = new HashMap&lt;String, List&lt;String&gt;&gt;();
for (final KeyValuePair pair : pairs) {
final String key = pair.getKey();
if (key == null) {
LOGGER.error(&quot;A null key is not valid in MapFilter&quot;);
continue;
}
final String value = pair.getValue();
if (value == null) {
LOGGER.error(&quot;A null value for key &quot; + key + &quot; is not allowed in MapFilter&quot;);
continue;
}
List&lt;String&gt; list = map.get(pair.getKey());
if (list != null) {
list.add(value);
} else {
list = new ArrayList&lt;String&gt;();
list.add(value);
map.put(pair.getKey(), list);
}
}
if (map.size() == 0) {
LOGGER.error(&quot;MapFilter is not configured with any valid key value pairs&quot;);</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/core/net/JMSQueueManager.java</td><td><a href="./xref/org/apache/logging/log4j/core/net/JMSQueueManager.html#108">108</a></td></tr><tr class="b"><td>org/apache/logging/log4j/core/net/JMSTopicManager.java</td><td><a href="./xref/org/apache/logging/log4j/core/net/JMSTopicManager.html#108">108</a></td></tr><tr class="a"><td colspan='2'><div><pre> super.send(object, info.session, info.sender);
} catch (final Exception ex) {
cleanup(true);
throw ex;
}
}
@Override
public void releaseSub() {
if (info != null) {
cleanup(false);
}
}
private void cleanup(final boolean quiet) {
try {
info.session.close();
} catch (final Exception e) {
if (!quiet) {
LOGGER.error(&quot;Error closing session for &quot; + getName(), e);
}
}
try {
info.conn.close();
} catch (final Exception e) {
if (!quiet) {
LOGGER.error(&quot;Error closing connection for &quot; + getName(), e);
}
}
info = null;
}
/**
* Data for the factory.
*/
private static class FactoryData {
private final String factoryName;
private final String providerURL;
private final String urlPkgPrefixes;
private final String securityPrincipalName;
private final String securityCredentials;
private final String factoryBindingName;
private final String queueBindingName;</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/core/appender/RandomAccessFileManager.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/RandomAccessFileManager.html#77">77</a></td></tr><tr class="b"><td>org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.html#63">63</a></td></tr><tr class="a"><td colspan='2'><div><pre> isFlush, bufferSize, advertiseURI, layout), FACTORY);
}
public Boolean isEndOfBatch() {
return isEndOfBatch.get();
}
public void setEndOfBatch(final boolean isEndOfBatch) {
this.isEndOfBatch.set(Boolean.valueOf(isEndOfBatch));
}
@Override
protected synchronized void write(final byte[] bytes, int offset, int length) {
super.write(bytes, offset, length); // writes to dummy output stream
int chunk = 0;
do {
if (length &gt; buffer.remaining()) {
flush();
}
chunk = Math.min(length, buffer.remaining());
buffer.put(bytes, offset, chunk);
offset += chunk;
length -= chunk;
} while (length &gt; 0);
if (isImmediateFlush || isEndOfBatch.get() == Boolean.TRUE) {
flush();
}
}
@Override</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/core/async/AsyncLoggerConfig.java</td><td><a href="./xref/org/apache/logging/log4j/core/async/AsyncLoggerConfig.html#199">199</a></td></tr><tr class="b"><td>org/apache/logging/log4j/core/config/LoggerConfig.java</td><td><a href="./xref/org/apache/logging/log4j/core/config/LoggerConfig.html#494">494</a></td></tr><tr class="a"><td colspan='2'><div><pre> @Plugin(name = &quot;asyncRoot&quot;, category = &quot;Core&quot;, printObject = true)
public static class RootLogger extends LoggerConfig {
@PluginFactory
public static LoggerConfig createLogger(
@PluginAttribute(&quot;additivity&quot;) final String additivity,
@PluginAttribute(&quot;level&quot;) final String levelName,
@PluginAttribute(&quot;includeLocation&quot;) final String includeLocation,
@PluginElement(&quot;AppenderRef&quot;) final AppenderRef[] refs,
@PluginElement(&quot;Properties&quot;) final Property[] properties,
@PluginConfiguration final Configuration config,
@PluginElement(&quot;Filters&quot;) final Filter filter) {
final List&lt;AppenderRef&gt; appenderRefs = Arrays.asList(refs);
Level level;
try {
level = Level.toLevel(levelName, Level.ERROR);
} catch (final Exception ex) {
LOGGER.error(
&quot;Invalid Log level specified: {}. Defaulting to Error&quot;,
levelName);
level = Level.ERROR;
}
final boolean additive = Booleans.parseBoolean(additivity, true);
return new AsyncLoggerConfig(LogManager.ROOT_LOGGER_NAME,</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/core/appender/RollingFileAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/RollingFileAppender.html#143">143</a></td></tr><tr class="b"><td>org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.html#160">160</a></td></tr><tr class="a"><td colspan='2'><div><pre> final boolean isBuffered = Booleans.parseBoolean(bufferedIO, true);
final boolean isFlush = Booleans.parseBoolean(immediateFlush, true);
final boolean isAdvertise = Boolean.parseBoolean(advertise);
if (name == null) {
LOGGER.error(&quot;No name provided for FileAppender&quot;);
return null;
}
if (fileName == null) {
LOGGER.error(&quot;No filename was provided for FileAppender with name &quot; + name);
return null;
}
if (filePattern == null) {
LOGGER.error(&quot;No filename pattern provided for FileAppender with name &quot; + name);
return null;
}
if (policy == null) {
LOGGER.error(&quot;A TriggeringPolicy must be provided&quot;);
return null;
}
if (strategy == null) {
strategy = DefaultRolloverStrategy.createStrategy(null, null, null,
String.valueOf(Deflater.DEFAULT_COMPRESSION), config);
}
if (layout == null) {
layout = PatternLayout.createLayout(null, null, null, null, null, null);
}
final RollingFileManager manager = RollingFileManager.getFileManager(fileName, filePattern, isAppend,</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/core/appender/FileAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/FileAppender.html#47">47</a></td></tr><tr class="b"><td>org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.html#48">48</a></td></tr><tr class="a"><td colspan='2'><div><pre> private FileAppender(final String name, final Layout&lt;? extends Serializable&gt; layout, final Filter filter, final FileManager manager,
final String filename, final boolean ignoreExceptions, final boolean immediateFlush,
final Advertiser advertiser) {
super(name, layout, filter, ignoreExceptions, immediateFlush, manager);
if (advertiser != null) {
final Map&lt;String, String&gt; configuration = new HashMap&lt;String, String&gt;(layout.getContentFormat());
configuration.putAll(manager.getContentFormat());
configuration.put(&quot;contentType&quot;, layout.getContentType());
configuration.put(&quot;name&quot;, name);
advertisement = advertiser.advertise(configuration);
}
this.fileName = filename;
this.advertiser = advertiser;
}
@Override
public void stop() {
super.stop();
if (advertiser != null) {
advertiser.unadvertise(advertisement);
}
}</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/core/net/SocketServer.java</td><td><a href="./xref/org/apache/logging/log4j/core/net/SocketServer.html#68">68</a></td></tr><tr class="b"><td>org/apache/logging/log4j/core/net/UDPSocketServer.java</td><td><a href="./xref/org/apache/logging/log4j/core/net/UDPSocketServer.html#69">69</a></td></tr><tr class="a"><td colspan='2'><div><pre> this.server = new ServerSocket(port);
this.logger = LogManager.getLogger(this.getClass().getName() + '.' + port);
}
/**
* Main startup for the server.
* @param args The command line arguments.
* @throws Exception if an error occurs.
*/
public static void main(final String[] args) throws Exception {
if (args.length &lt; 1 || args.length &gt; 2) {
System.err.println(&quot;Incorrect number of arguments&quot;);
printUsage();
return;
}
final int port = Integer.parseInt(args[0]);
if (port &lt;= 0 || port &gt;= MAX_PORT) {
System.err.println(&quot;Invalid port number&quot;);
printUsage();
return;
}
if (args.length == 2 &amp;&amp; args[1].length() &gt; 0) {
ConfigurationFactory.setConfigurationFactory(new ServerConfigurationFactory(args[1]));
}
final SocketServer sserver = new SocketServer(port);</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/core/helpers/Throwables.java</td><td><a href="./xref/org/apache/logging/log4j/core/helpers/Throwables.html#40">40</a></td></tr><tr class="b"><td>org/apache/logging/log4j/core/layout/HTMLLayout.java</td><td><a href="./xref/org/apache/logging/log4j/core/layout/HTMLLayout.html#214">214</a></td></tr><tr class="a"><td colspan='2'><div><pre> public static List&lt;String&gt; toStringList(final Throwable throwable) {
final StringWriter sw = new StringWriter();
final PrintWriter pw = new PrintWriter(sw);
try {
throwable.printStackTrace(pw);
} catch (final RuntimeException ex) {
// Ignore any exceptions.
}
pw.flush();
final LineNumberReader reader = new LineNumberReader(new StringReader(sw.toString()));
final ArrayList&lt;String&gt; lines = new ArrayList&lt;String&gt;();
try {
String line = reader.readLine();
while (line != null) {
lines.add(line);
line = reader.readLine();
}
} catch (final IOException ex) {
if (ex instanceof InterruptedIOException) {
Thread.currentThread().interrupt();
}
lines.add(ex.toString());
}</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/core/filter/BurstFilter.java</td><td><a href="./xref/org/apache/logging/log4j/core/filter/BurstFilter.html#88">88</a></td></tr><tr class="b"><td>org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java</td><td><a href="./xref/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.html#56">56</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/filter/ThresholdFilter.java</td><td><a href="./xref/org/apache/logging/log4j/core/filter/ThresholdFilter.html#44">44</a></td></tr><tr class="b"><td colspan='2'><div><pre> }
@Override
public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
final Object... params) {
return filter(level);
}
@Override
public Result filter(final Logger logger, final Level level, final Marker marker, final Object msg,
final Throwable t) {
return filter(level);
}
@Override
public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg,
final Throwable t) {
return filter(level);
}
@Override
public Result filter(final LogEvent event) {
return filter(event.getLevel());
}
/**
* Decide if we're going to log &lt;code&gt;event&lt;/code&gt; based on whether the
* maximum burst of log statements has been exceeded.
*
* @param level The log level.
* @return The onMatch value if the filter passes, onMismatch otherwise.
*/
private Result filter(final Level level) {</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/core/appender/SyslogAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/SyslogAppender.html#114">114</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/appender/TLSSyslogAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/TLSSyslogAppender.html#108">108</a></td></tr><tr class="b"><td colspan='2'><div><pre> @PluginElement(&quot;Filters&quot;) final Filter filter,
@PluginConfiguration final Configuration config,
@PluginAttribute(&quot;charset&quot;) final String charsetName,
@PluginAttribute(&quot;exceptionPattern&quot;) final String exceptionPattern,
@PluginElement(&quot;LoggerFields&quot;) final LoggerFields[] loggerFields,
@PluginAttribute(&quot;advertise&quot;) final String advertise) {
final boolean isFlush = Booleans.parseBoolean(immediateFlush, true);
final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
final int reconnectDelay = AbstractAppender.parseInt(delay, 0);
final boolean fail = Booleans.parseBoolean(immediateFail, true);
final int port = AbstractAppender.parseInt(portNum, 0);
final boolean isAdvertise = Boolean.parseBoolean(advertise);</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/core/appender/RandomAccessFileManager.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/RandomAccessFileManager.html#104">104</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.html#98">98</a></td></tr><tr class="b"><td colspan='2'><div><pre> flush();
}
}
@Override
public synchronized void flush() {
buffer.flip();
try {
randomAccessFile.write(buffer.array(), 0, buffer.limit());
} catch (final IOException ex) {
final String msg = &quot;Error writing to RandomAccessFile &quot; + getName();
throw new AppenderLoggingException(msg, ex);
}
buffer.clear();
}
@Override
public synchronized void close() {
flush();
try {
randomAccessFile.close();
} catch (final IOException ex) {
LOGGER.error(&quot;Unable to close RandomAccessFile &quot; + getName() + &quot;. &quot;
+ ex);
}
}</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/core/net/SocketServer.java</td><td><a href="./xref/org/apache/logging/log4j/core/net/SocketServer.html#95">95</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/net/UDPSocketServer.java</td><td><a href="./xref/org/apache/logging/log4j/core/net/UDPSocketServer.html#99">99</a></td></tr><tr class="b"><td colspan='2'><div><pre> final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, enc));
while (true) {
final String line = reader.readLine();
if (line == null || line.equalsIgnoreCase(&quot;Quit&quot;) || line.equalsIgnoreCase(&quot;Stop&quot;) || line.equalsIgnoreCase(&quot;Exit&quot;)) {
sserver.shutdown();
server.join();
break;
}
}
}
private static void printUsage() {
System.out.println(&quot;Usage: ServerSocket port configFilePath&quot;);
}
/**
* Shutdown the server.
*/
public void shutdown() {
this.isActive = false;
Thread.currentThread().interrupt();
}
/**
* Accept incoming events and processes them.
*/
@Override
public void run() {
while (isActive) {
try {
// Accept incoming connections.
final Socket clientSocket = server.accept();</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/core/appender/RollingFileAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/RollingFileAppender.html#130">130</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.html#148">148</a></td></tr><tr class="b"><td colspan='2'><div><pre> @PluginAttribute(&quot;bufferedIO&quot;) final String bufferedIO,
@PluginAttribute(&quot;immediateFlush&quot;) final String immediateFlush,
@PluginElement(&quot;Policy&quot;) final TriggeringPolicy policy,
@PluginElement(&quot;Strategy&quot;) RolloverStrategy strategy,
@PluginElement(&quot;Layout&quot;) Layout&lt;? extends Serializable&gt; layout,
@PluginElement(&quot;Filter&quot;) final Filter filter,
@PluginAttribute(&quot;ignoreExceptions&quot;) final String ignore,
@PluginAttribute(&quot;advertise&quot;) final String advertise,
@PluginAttribute(&quot;advertiseURI&quot;) final String advertiseURI,
@PluginConfiguration final Configuration config) {
final boolean isAppend = Booleans.parseBoolean(append, true);
final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
final boolean isBuffered = Booleans.parseBoolean(bufferedIO, true);</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/core/config/JSONConfiguration.java</td><td><a href="./xref/org/apache/logging/log4j/core/config/JSONConfiguration.html#132">132</a></td></tr><tr class="a"><td>org/apache/logging/log4j/core/config/XMLConfiguration.java</td><td><a href="./xref/org/apache/logging/log4j/core/config/XMLConfiguration.html#203">203</a></td></tr><tr class="b"><td colspan='2'><div><pre> final StatusListener listener = statusIter.next();
if (listener instanceof StatusConsoleListener) {
found = true;
((StatusConsoleListener) listener).setLevel(status);
if (!verbose) {
((StatusConsoleListener) listener).setFilters(VERBOSE_CLASSES);
}
}
}
if (!found &amp;&amp; status != Level.OFF) {
final StatusConsoleListener listener = new StatusConsoleListener(status, stream);
if (!verbose) {
listener.setFilters(VERBOSE_CLASSES);
}
((StatusLogger) LOGGER).registerListener(listener);
for (final String msg : messages) {
LOGGER.error(msg);
}
}</pre></div></td></tr></table></div>
</td>
</tr>
</table>
</div>
<div class="footer">
<p>Copyright &copy; 1999-2014 <a class="external" href="http://www.apache.org">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://twitter.github.com/bootstrap/">Twitter Bootstrap</a>. Icons from <a class="external" href="http://glyphicons.com/">Glyphicons Free</a>.</p>
</div>
</div>
</body>
</html>