blob: e90e3bd50fb7a2cddc75c33ee1e8d1156be380b8 [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 2015-12-06 -->
<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 Core &#x2013; 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="20151206" />
<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.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="https://analysis.apache.org/dashboard/index/org.apache.logging.log4j:log4j" class="external" target="_blank" title="Sonar">Sonar</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="../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="../guidelines.html" title="Guidelines">Guidelines</a>
</li>
<li class="none">
<a href="../javastyle.html" title="Style Guide">Style Guide</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="../runtime-dependencies.html" title="Runtime Dependencies">Runtime Dependencies</a>
</li>
<li class="none">
<a href="../faq.html" title="FAQ">FAQ</a>
</li>
<li class="none">
<a href="../articles.html" title="Articles">Articles</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-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/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>
<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-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-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-nosql/index.html" title="Log4j NoSQL support">Log4j NoSQL support</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">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="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="xref/index.html" title="Source Xref">Source Xref</a>
</li>
<li class="none active">
<a href="cpd.html" title="CPD">CPD</a>
</li>
<li class="none">
<a href="pmd.html" title="PMD">PMD</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><a name="CPD_Results"></a>CPD Results</h2>
<p>The following document contains the results of PMD's <a class="externalLink" href="http://pmd.sourceforge.net/cpd.html">CPD</a> 5.3.2.</p></div>
<div class="section">
<h2><a name="Duplications"></a>Duplications</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/util/CronExpression.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/util/CronExpression.html#L1258">1258</a></td></tr>
<tr class="a">
<td>org/apache/logging/log4j/core/util/CronExpression.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/util/CronExpression.html#L1294">1294</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> java.util.Calendar tcal = java.util.Calendar.getInstance(getTimeZone());
tcal.set(Calendar.SECOND, 0);
tcal.set(Calendar.MINUTE, 0);
tcal.set(Calendar.HOUR_OF_DAY, 0);
tcal.set(Calendar.DAY_OF_MONTH, day);
tcal.set(Calendar.MONTH, mon - 1);
tcal.set(Calendar.YEAR, cl.get(Calendar.YEAR));
int ldom = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
int dow = tcal.get(Calendar.DAY_OF_WEEK);
if (dow == Calendar.SATURDAY &amp;&amp; day == 1) {
day += 2;
} else if (dow == Calendar.SATURDAY) {
day -= 1;
} else if (dow == Calendar.SUNDAY &amp;&amp; day == ldom) {
day -= 2;
} else if (dow == Calendar.SUNDAY) {
day += 1;
}
tcal.set(Calendar.SECOND, sec);
tcal.set(Calendar.MINUTE, min);
tcal.set(Calendar.HOUR_OF_DAY, hr);
tcal.set(Calendar.DAY_OF_MONTH, day);
tcal.set(Calendar.MONTH, mon - 1);
Date nTime = tcal.getTime();
if (nTime.before(afterTime)) {
day = 1;</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/AwaitCompletionReliabilityStrategy.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/config/AwaitCompletionReliabilityStrategy.html#L47">47</a></td></tr>
<tr class="a">
<td>org/apache/logging/log4j/core/config/LockingReliabilityStrategy.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/config/LockingReliabilityStrategy.html#L39">39</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> this.loggerConfig = Objects.requireNonNull(loggerConfig, &quot;loggerConfig is null&quot;);
}
/*
* (non-Javadoc)
*
* @see org.apache.logging.log4j.core.config.ReliabilityStrategy#log(org.apache.logging.log4j.util.Supplier,
* java.lang.String, java.lang.String, org.apache.logging.log4j.Marker, org.apache.logging.log4j.Level,
* org.apache.logging.log4j.message.Message, java.lang.Throwable)
*/
@Override
public void log(final Supplier&lt;LoggerConfig&gt; reconfigured, final String loggerName, final String fqcn,
final Marker marker, final Level level, final Message data, final Throwable t) {
final LoggerConfig config = getActiveLoggerConfig(reconfigured);
try {
config.log(loggerName, fqcn, marker, level, data, t);
} finally {
config.getReliabilityStrategy().afterLogEvent();
}
}
/*
* (non-Javadoc)
*
* @see org.apache.logging.log4j.core.config.ReliabilityStrategy#log(org.apache.logging.log4j.util.Supplier,
* org.apache.logging.log4j.core.LogEvent)
*/
@Override
public void log(final Supplier&lt;LoggerConfig&gt; reconfigured, final LogEvent event) {
final LoggerConfig config = getActiveLoggerConfig(reconfigured);
try {
config.log(event);
} finally {
config.getReliabilityStrategy().afterLogEvent();
}
}
/*
* (non-Javadoc)
*
* @see
* org.apache.logging.log4j.core.config.ReliabilityStrategy#beforeLogEvent(org.apache.logging.log4j.core.config.
* LoggerConfig, org.apache.logging.log4j.util.Supplier)
*/
@Override
public LoggerConfig getActiveLoggerConfig(final Supplier&lt;LoggerConfig&gt; next) {
LoggerConfig result = this.loggerConfig;
if (!beforeLogEvent()) {
result = next.get();
return result.getReliabilityStrategy().getActiveLoggerConfig(next);
}
return result;
}
private boolean beforeLogEvent() {</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/MemoryMappedFileAppender.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.html#L56">56</a></td></tr>
<tr class="a">
<td>org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.html#L50">50</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> final Filter filter, final MemoryMappedFileManager 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;&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);
}
}
/**
* Write the log entry rolling over the file when required.
*
* @param event The LogEvent.
*/
@Override
public void append(final LogEvent event) {
// Leverage the nice batching behaviour of async Loggers/Appenders:
// we can signal the file manager that it needs to flush the buffer
// to disk at the end of a batch.
// From a user's point of view, this means that all log events are
// _always_ available in the log file, without incurring the overhead
// of immediateFlush=true.
getManager().setEndOfBatch(event.isEndOfBatch());
super.append(event);
}
/**
* Returns the file name this appender is associated with.
*
* @return The File name.
*/
public String getFileName() {
return this.fileName;
}
/**
* Returns the length of the memory mapped region.
*
* @return the length of the memory mapped region
*/
public int getRegionLength() {</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/layout/MarkerPatternSelector.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/layout/MarkerPatternSelector.html#L58">58</a></td></tr>
<tr class="a">
<td>org/apache/logging/log4j/core/layout/ScriptPatternSelector.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/layout/ScriptPatternSelector.html#L66">66</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> final PatternParser parser = PatternLayout.createPatternParser(config);
for (PatternMatch property : properties) {
try {
List&lt;PatternFormatter&gt; list = parser.parse(property.getPattern(), alwaysWriteExceptions, noConsoleNoAnsi);
formatterMap.put(property.getKey(), list.toArray(new PatternFormatter[list.size()]));
patternMap.put(property.getKey(), property.getPattern());
} catch (RuntimeException ex) {
throw new IllegalArgumentException(&quot;Cannot parse pattern '&quot; + property.getPattern() + &quot;'&quot;, ex);
}
}
try {
List&lt;PatternFormatter&gt; list = parser.parse(defaultPattern, alwaysWriteExceptions, noConsoleNoAnsi);
defaultFormatters = list.toArray(new PatternFormatter[list.size()]);
this.defaultPattern = defaultPattern;
} catch (RuntimeException ex) {
throw new IllegalArgumentException(&quot;Cannot parse pattern '&quot; + defaultPattern + &quot;'&quot;, ex);
}
}
@Override
public PatternFormatter[] getFormatters(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/filter/MapFilter.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/filter/MapFilter.html#L129">129</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#L114">114</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#L124">124</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;&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;&gt;();
list.add(value);
map.put(pair.getKey(), list);
}
}
if (map.isEmpty()) {
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/appender/RandomAccessFileManager.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/appender/RandomAccessFileManager.html#L76">76</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#L85">85</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 endOfBatch) {
this.isEndOfBatch.set(Boolean.valueOf(endOfBatch));
}
@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/config/properties/PropertiesConfigurationFactory.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationFactory.html#L306">306</a></td></tr>
<tr class="b">
<td>org/apache/logging/log4j/core/config/properties/PropertiesConfigurationFactory.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationFactory.html#L350">350</a></td></tr>
<tr class="a"><td colspan='2'>
<div>
<pre> loggerBuilder = builder.newLogger(name, level);
}
String appenderRefs = properties.getProperty(&quot;appenderRefs&quot;);
if (appenderRefs != null) {
properties.remove(&quot;appenderRefs&quot;);
String[] refNames = appenderRefs.split(&quot;,&quot;);
for (String appenderRef : refNames) {
appenderRef = appenderRef.trim();
Properties refProps = PropertiesUtil.extractSubset(properties, &quot;appenderRef.&quot; + appenderRef);
loggerBuilder.add(createAppenderRef(builder, appenderRef, refProps));
}
}
String filters = properties.getProperty(&quot;filters&quot;);
if (filters != null) {
properties.remove(&quot;filters&quot;);
String[] filterNames = filters.split(&quot;,&quot;);
for (String filterName : filterNames) {
filterName = filterName.trim();
Properties filterProps = PropertiesUtil.extractSubset(properties, &quot;filter.&quot; + filterName);
loggerBuilder.add(createFilter(builder, filterName, filterProps));
}
}</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#L49">49</a></td></tr>
<tr class="b">
<td>org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.html#L56">56</a></td></tr>
<tr class="a">
<td>org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.html#L50">50</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> 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;&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="a">
<th>File</th>
<th>Line</th></tr>
<tr class="b">
<td>org/apache/logging/log4j/core/layout/MarkerPatternSelector.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/layout/MarkerPatternSelector.html#L104">104</a></td></tr>
<tr class="a">
<td>org/apache/logging/log4j/core/layout/ScriptPatternSelector.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/layout/ScriptPatternSelector.html#L124">124</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> return new MarkerPatternSelector(properties, defaultPattern, alwaysWriteExceptions,
noConsoleNoAnsi, config);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
boolean first = true;
for (Map.Entry&lt;String, String&gt; entry : patternMap.entrySet()) {
if (!first) {
sb.append(&quot;, &quot;);
}
sb.append(&quot;key=\&quot;&quot;).append(entry.getKey()).append(&quot;\&quot;, pattern=\&quot;&quot;).append(entry.getValue()).append(&quot;\&quot;&quot;);
first = false;
}
if (!first) {
sb.append(&quot;, &quot;);
}
sb.append(&quot;default=\&quot;&quot;).append(defaultPattern).append(&quot;\&quot;&quot;);
return sb.toString();
}
}</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#L59">59</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#L60">60</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> 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;&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/filter/BurstFilter.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/filter/BurstFilter.html#L96">96</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#L48">48</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/layout/CsvLogEventLayout.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/layout/CsvLogEventLayout.html#L54">54</a></td></tr>
<tr class="a">
<td>org/apache/logging/log4j/core/layout/CsvParameterLayout.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/layout/CsvParameterLayout.html#L63">63</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> public static CsvLogEventLayout createLayout(
// @formatter:off
@PluginAttribute(value = &quot;format&quot;, defaultString = DEFAULT_FORMAT) final String format,
@PluginAttribute(&quot;delimiter&quot;) final Character delimiter,
@PluginAttribute(&quot;escape&quot;) final Character escape,
@PluginAttribute(&quot;quote&quot;) final Character quote,
@PluginAttribute(&quot;quoteMode&quot;) final QuoteMode quoteMode,
@PluginAttribute(&quot;nullString&quot;) final String nullString,
@PluginAttribute(&quot;recordSeparator&quot;) final String recordSeparator,
@PluginAttribute(value = &quot;charset&quot;, defaultString = DEFAULT_CHARSET) final Charset charset,
@PluginAttribute(&quot;header&quot;) final String header,
@PluginAttribute(&quot;footer&quot;) final String footer)
// @formatter:on
{
final CSVFormat csvFormat = createFormat(format, delimiter, escape, quote, quoteMode, nullString, recordSeparator);
return new CsvLogEventLayout(charset, csvFormat, header, footer);</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/DynamicThresholdFilter.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.html#L129">129</a></td></tr>
<tr class="a">
<td>org/apache/logging/log4j/core/filter/LevelRangeFilter.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/filter/LevelRangeFilter.html#L83">83</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> }
@Override
public Result filter(final LogEvent event) {
return filter(event.getLevel());
}
@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 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 String msg,
final Object... params) {
return filter(level);
}
public String 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#L164">164</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#L177">177</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> 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), null, true, config);
}
if (layout == null) {
layout = PatternLayout.createDefaultLayout();
}
final RollingFileManager manager = RollingFileManager.getFileManager(fileName, filePattern, isAppend,</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/AwaitUnconditionallyReliabilityStrategy.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/config/AwaitUnconditionallyReliabilityStrategy.html#L45">45</a></td></tr>
<tr class="a">
<td>org/apache/logging/log4j/core/config/DefaultReliabilityStrategy.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/config/DefaultReliabilityStrategy.html#L36">36</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> DEFAULT_SLEEP_MILLIS);
}
/*
* (non-Javadoc)
*
* @see org.apache.logging.log4j.core.config.ReliabilityStrategy#log(org.apache.logging.log4j.util.Supplier,
* java.lang.String, java.lang.String, org.apache.logging.log4j.Marker, org.apache.logging.log4j.Level,
* org.apache.logging.log4j.message.Message, java.lang.Throwable)
*/
@Override
public void log(Supplier&lt;LoggerConfig&gt; reconfigured, String loggerName, String fqcn, Marker marker, Level level,
Message data, Throwable t) {
loggerConfig.log(loggerName, fqcn, marker, level, data, t);
}
/*
* (non-Javadoc)
*
* @see org.apache.logging.log4j.core.config.ReliabilityStrategy#log(org.apache.logging.log4j.util.Supplier,
* org.apache.logging.log4j.core.LogEvent)
*/
@Override
public void log(Supplier&lt;LoggerConfig&gt; reconfigured, LogEvent event) {
loggerConfig.log(event);
}
/*
* (non-Javadoc)
*
* @see
* org.apache.logging.log4j.core.config.ReliabilityStrategy#beforeLogEvent(org.apache.logging.log4j.core.config.
* LoggerConfig, org.apache.logging.log4j.util.Supplier)
*/
@Override
public LoggerConfig getActiveLoggerConfig(Supplier&lt;LoggerConfig&gt; next) {
return this.loggerConfig;
}
/*
* (non-Javadoc)
*
* @see org.apache.logging.log4j.core.config.ReliabilityStrategy#afterLogEvent()
*/
@Override
public void afterLogEvent() {
// no action
}
/*
* (non-Javadoc)
*
* @see org.apache.logging.log4j.core.config.ReliabilityStrategy#beforeStopAppenders()
*/
@Override
public void beforeStopAppenders() {
// no action
}
/*
* (non-Javadoc)
*
* @see
* org.apache.logging.log4j.core.config.ReliabilityStrategy#beforeStopConfiguration(org.apache.logging.log4j.core
* .config.Configuration)
*/
@Override
public void beforeStopConfiguration(Configuration configuration) {</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/server/TcpSocketServer.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/net/server/TcpSocketServer.html#L170">170</a></td></tr>
<tr class="a">
<td>org/apache/logging/log4j/core/net/server/UdpSocketServer.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/net/server/UdpSocketServer.html#L96">96</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> return LOGGER.exit(socketServer);
}
/**
* 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 TcpSocketServer&lt;ObjectInputStream&gt; socketServer = TcpSocketServer.createSerializedSocketServer(port);</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/util/CronExpression.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/util/CronExpression.html#L1356">1356</a></td></tr>
<tr class="a">
<td>org/apache/logging/log4j/core/util/CronExpression.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/util/CronExpression.html#L1447">1447</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> int daysToAdd = 0;
if (cDow &lt; dow) {
daysToAdd = dow - cDow;
}
if (cDow &gt; dow) {
daysToAdd = dow + (7 - cDow);
}
int lDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR));
if (day + daysToAdd &gt; lDay) { // did we already miss the
// last one?
cl.set(Calendar.SECOND, 0);
cl.set(Calendar.MINUTE, 0);
cl.set(Calendar.HOUR_OF_DAY, 0);
cl.set(Calendar.DAY_OF_MONTH, 1);
cl.set(Calendar.MONTH, mon);
// no '- 1' here because we are promoting the month
continue;
}</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/util/CronExpression.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/util/CronExpression.html#L764">764</a></td></tr>
<tr class="a">
<td>org/apache/logging/log4j/core/util/CronExpression.java</td>
<td><a href="./xref/org/apache/logging/log4j/core/util/CronExpression.html#L790">790</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> if (i &lt; s.length() &amp;&amp; ((c = s.charAt(i)) == '/')) {
i++;
c = s.charAt(i);
int v2 = Integer.parseInt(String.valueOf(c));
i++;
if (i &gt;= s.length()) {
addToSet(val, end, v2, type);
return i;
}
c = s.charAt(i);
if (c &gt;= '0' &amp;&amp; c &lt;= '9') {
ValueSet vs = getValue(v2, s, i);
int v3 = vs.value;
addToSet(val, end, v3, type);
i = vs.pos;
return i;
} else {</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#L145">145</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#L161">161</a></td></tr>
<tr class="b"><td colspan='2'>
<div>
<pre> @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></div>
</td>
</tr>
</table>
</div>
<div class="footer">
<p>Copyright &copy; 1999-2015 <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://getbootstrap.com/">Twitter Bootstrap</a>. Icons from <a class="external" href="http://glyphicons.com/">Glyphicons Free</a>.</p>
</div>
</div>
</body>
</html>