| <!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 ™</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 && path.length() > 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("Unable to process configuration at " + path + ", using default."); |
| } |
| 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("protocol") final String protocol, |
| @PluginAttribute("reconnectionDelay") final String delay, |
| @PluginAttribute("immediateFail") final String immediateFail, |
| @PluginAttribute("name") final String name, |
| @PluginAttribute("immediateFlush") final String immediateFlush, |
| @PluginAttribute("ignoreExceptions") final String ignore, |
| @PluginAttribute("facility") final String facility, |
| @PluginAttribute("id") final String id, |
| @PluginAttribute("enterpriseNumber") final String ein, |
| @PluginAttribute("includeMDC") final String includeMDC, |
| @PluginAttribute("mdcId") final String mdcId, |
| @PluginAttribute("mdcPrefix") final String mdcPrefix, |
| @PluginAttribute("eventPrefix") final String eventPrefix, |
| @PluginAttribute("newLine") final String includeNL, |
| @PluginAttribute("newLineEscape") final String escapeNL, |
| @PluginAttribute("appName") final String appName, |
| @PluginAttribute("messageId") final String msgId, |
| @PluginAttribute("mdcExcludes") final String excludes, |
| @PluginAttribute("mdcIncludes") final String includes, |
| @PluginAttribute("mdcRequired") final String required, |
| @PluginAttribute("format") final String format, |
| @PluginElement("Filters") 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 "true" 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("additivity") final String additivity, |
| @PluginAttribute("level") final String levelName, |
| @PluginAttribute("name") final String loggerName, |
| @PluginAttribute("includeLocation") final String includeLocation, |
| @PluginElement("AppenderRef") final AppenderRef[] refs, |
| @PluginElement("Properties") final Property[] properties, |
| @PluginConfiguration final Configuration config, |
| @PluginElement("Filters") final Filter filter) { |
| if (loggerName == null) { |
| LOGGER.error("Loggers cannot be configured without a name"); |
| return null; |
| } |
| |
| final List<AppenderRef> appenderRefs = Arrays.asList(refs); |
| Level level; |
| try { |
| level = Level.toLevel(levelName, Level.ERROR); |
| } catch (final Exception ex) { |
| LOGGER.error( |
| "Invalid Log level specified: {}. Defaulting to Error", |
| levelName); |
| level = Level.ERROR; |
| } |
| final String name = loggerName.equals("root") ? "" : 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("err")) { |
| 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("Unable to write to " + dest + ". Writing to stdout"); |
| } |
| } |
| } |
| } else if ("shutdownHook".equalsIgnoreCase(entry.getKey())) { |
| String hook = getStrSubstitutor().replace(entry.getValue()); |
| isShutdownHookEnabled = !hook.equalsIgnoreCase("disable"); |
| } else if ("verbose".equalsIgnoreCase(entry.getKey())) { |
| verbose = Boolean.parseBoolean(getStrSubstitutor().replace(entry.getValue())); |
| } else if ("packages".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<? extends Serializable> 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<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="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 > 0 && !Character.isWhitespace(toAppendTo.charAt(len - 1))) { |
| toAppendTo.append(" "); |
| } |
| 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 <= 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#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("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.size() == 0) { |
| 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/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("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#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 > 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/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 = "asyncRoot", category = "Core", printObject = true) |
| public static class RootLogger extends LoggerConfig { |
| |
| @PluginFactory |
| public static LoggerConfig createLogger( |
| @PluginAttribute("additivity") final String additivity, |
| @PluginAttribute("level") final String levelName, |
| @PluginAttribute("includeLocation") final String includeLocation, |
| @PluginElement("AppenderRef") final AppenderRef[] refs, |
| @PluginElement("Properties") final Property[] properties, |
| @PluginConfiguration final Configuration config, |
| @PluginElement("Filters") final Filter filter) { |
| final List<AppenderRef> appenderRefs = Arrays.asList(refs); |
| Level level; |
| try { |
| level = Level.toLevel(levelName, Level.ERROR); |
| } catch (final Exception ex) { |
| LOGGER.error( |
| "Invalid Log level specified: {}. Defaulting to Error", |
| 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("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.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<? 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/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 < 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 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<String> 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<String> lines = new ArrayList<String>(); |
| 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 <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/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("Filters") final Filter filter, |
| @PluginConfiguration final Configuration config, |
| @PluginAttribute("charset") final String charsetName, |
| @PluginAttribute("exceptionPattern") final String exceptionPattern, |
| @PluginElement("LoggerFields") final LoggerFields[] loggerFields, |
| @PluginAttribute("advertise") 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 = "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); |
| } |
| }</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("Quit") || line.equalsIgnoreCase("Stop") || line.equalsIgnoreCase("Exit")) { |
| sserver.shutdown(); |
| server.join(); |
| break; |
| } |
| } |
| } |
| |
| private static void printUsage() { |
| System.out.println("Usage: ServerSocket port configFilePath"); |
| } |
| |
| /** |
| * 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("bufferedIO") final String bufferedIO, |
| @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><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 && 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 © 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> |