| <!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 Jul 12, 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="20140712" /> |
| <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 ™</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="../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="../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> |
| <li class="collapsed"> |
| <a href="../manual/customconfig.html" title="Extending Log4j Configuration">Extending Log4j Configuration</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> |
| <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> |
| </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"> |
| <a href="pmd.html" title="PMD">PMD</a> |
| </li> |
| <li class="none active"> |
| <a href="cpd.html" title="CPD">CPD</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.5.</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/pattern/ExtendedThrowablePatternConverter.java</td><td><a href="./xref/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.html#L72">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#L72">72</a></td></tr><tr class="b"><td colspan='2'><div><pre> final String trace = proxy.getExtendedStackTraceAsString(options.getPackages()); |
| final int len = toAppendTo.length(); |
| if (len > 0 && !Character.isWhitespace(toAppendTo.charAt(len - 1))) { |
| toAppendTo.append(' '); |
| } |
| if (!options.allLines() || !Constants.LINE_SEPARATOR.equals(options.getSeparator())) { |
| final StringBuilder sb = new StringBuilder(); |
| final String[] array = trace.split(Constants.LINE_SEPARATOR); |
| final int limit = options.minLines(array.length) - 1; |
| for (int i = 0; i <= limit; ++i) { |
| sb.append(array[i]); |
| if (i < 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#L125">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#L110">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#L120">120</a></td></tr><tr class="a"><td colspan='2'><div><pre> LOGGER.error("keys and values must be specified for the MapFilter"); |
| return null; |
| } |
| final Map<String, List<String>> map = new HashMap<String, List<String>>(); |
| for (final KeyValuePair pair : pairs) { |
| final String key = pair.getKey(); |
| if (key == null) { |
| LOGGER.error("A null key is not valid in MapFilter"); |
| continue; |
| } |
| final String value = pair.getValue(); |
| if (value == null) { |
| LOGGER.error("A null value for key " + key + " is not allowed in MapFilter"); |
| continue; |
| } |
| List<String> list = map.get(pair.getKey()); |
| if (list != null) { |
| list.add(value); |
| } else { |
| list = new ArrayList<String>(); |
| list.add(value); |
| map.put(pair.getKey(), list); |
| } |
| } |
| if (map.isEmpty()) { |
| LOGGER.error("MapFilter is not configured with any valid key value pairs");</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/jms/JmsQueueManager.java</td><td><a href="./xref/org/apache/logging/log4j/core/net/jms/JmsQueueManager.html#L109">109</a></td></tr><tr class="b"><td>org/apache/logging/log4j/core/net/jms/JmsTopicManager.java</td><td><a href="./xref/org/apache/logging/log4j/core/net/jms/JmsTopicManager.html#L109">109</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("Error closing session for " + getName(), e); |
| } |
| } |
| try { |
| info.conn.close(); |
| } catch (final Exception e) { |
| if (!quiet) { |
| LOGGER.error("Error closing connection for " + 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#L75">75</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 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 > buffer.remaining()) { |
| flush(); |
| } |
| chunk = Math.min(length, buffer.remaining()); |
| buffer.put(bytes, offset, chunk); |
| offset += chunk; |
| length -= chunk; |
| } while (length > 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/appender/FileAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/FileAppender.html#L47">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#L48">48</a></td></tr><tr class="a"><td colspan='2'><div><pre> private FileAppender(final String name, final Layout<? extends Serializable> 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<String, String> configuration = new HashMap<String, String>(layout.getContentFormat()); |
| configuration.putAll(manager.getContentFormat()); |
| configuration.put("contentType", layout.getContentType()); |
| configuration.put("name", 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/appender/RollingFileAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/RollingFileAppender.html#L57">57</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#L58">58</a></td></tr><tr class="a"><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<String, String> configuration = new HashMap<String, String>(layout.getContentFormat()); |
| configuration.put("contentType", layout.getContentType()); |
| configuration.put("name", 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="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#L88">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#L56">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#L44">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 <code>event</code> 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/net/server/TcpSocketServer.java</td><td><a href="./xref/org/apache/logging/log4j/core/net/server/TcpSocketServer.html#L125">125</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#L76">76</a></td></tr><tr class="b"><td colspan='2'><div><pre> return new TcpSocketServer<InputStream>(port, new XmlInputStreamLogEventBridge()); |
| } |
| |
| /** |
| * 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 < 1 || args.length > 2) { |
| System.err.println("Incorrect number of arguments"); |
| printUsage(); |
| return; |
| } |
| final int port = Integer.parseInt(args[0]); |
| if (port <= 0 || port >= MAX_PORT) { |
| System.err.println("Invalid port number"); |
| printUsage(); |
| return; |
| } |
| if (args.length == 2 && args[1].length() > 0) { |
| ConfigurationFactory.setConfigurationFactory(new ServerConfigurationFactory(args[1])); |
| } |
| final TcpSocketServer<ObjectInputStream> 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/appender/RollingFileAppender.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/RollingFileAppender.html#L153">153</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#L175">175</a></td></tr><tr class="b"><td colspan='2'><div><pre> if (name == null) { |
| LOGGER.error("No name provided for FileAppender"); |
| return null; |
| } |
| |
| if (fileName == null) { |
| LOGGER.error("No filename was provided for FileAppender with name " + name); |
| return null; |
| } |
| |
| if (filePattern == null) { |
| LOGGER.error("No filename pattern provided for FileAppender with name " + name); |
| return null; |
| } |
| |
| if (policy == null) { |
| LOGGER.error("A TriggeringPolicy must be provided"); |
| return null; |
| } |
| |
| if (strategy == null) { |
| strategy = DefaultRolloverStrategy.createStrategy(null, null, null, |
| String.valueOf(Deflater.DEFAULT_COMPRESSION), 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/appender/RandomAccessFileManager.java</td><td><a href="./xref/org/apache/logging/log4j/core/appender/RandomAccessFileManager.html#L104">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#L123">123</a></td></tr><tr class="b"><td colspan='2'><div><pre> } |
| |
| @Override |
| public synchronized void flush() { |
| buffer.flip(); |
| try { |
| randomAccessFile.write(buffer.array(), 0, buffer.limit()); |
| } catch (final IOException ex) { |
| final String msg = "Error writing to RandomAccessFile " + getName(); |
| throw new AppenderLoggingException(msg, ex); |
| } |
| buffer.clear(); |
| } |
| |
| @Override |
| public synchronized void close() { |
| flush(); |
| try { |
| randomAccessFile.close(); |
| } catch (final IOException ex) { |
| LOGGER.error("Unable to close RandomAccessFile " + getName() + ". " |
| + ex); |
| } |
| } |
| |
| /** |
| * Returns the name of the File being managed. |
| * |
| * @return The name of the File being managed. |
| */ |
| public String getFileName() {</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#L134">134</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#L159">159</a></td></tr><tr class="b"><td colspan='2'><div><pre> @PluginAttribute("immediateFlush") final String immediateFlush, |
| @PluginElement("Policy") final TriggeringPolicy policy, |
| @PluginElement("Strategy") RolloverStrategy strategy, |
| @PluginElement("Layout") Layout<? extends Serializable> layout, |
| @PluginElement("Filter") final Filter filter, |
| @PluginAttribute("ignoreExceptions") final String ignore, |
| @PluginAttribute("advertise") final String advertise, |
| @PluginAttribute("advertiseURI") 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 © 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> |