| <!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 2016-06-05 --> |
| <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 – 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="20160605" /> |
| <meta http-equiv="Content-Language" content="en" /> |
| |
| </head> |
| <body class="composite"> |
| <a href="https://logging.apache.org/"> |
| <img class="logo-left" src="./images/ls-logo.jpg" alt="Apache logging services logo" /> |
| </a> |
| <img class="logo-right" src="./images/logo.png" alt="Apache log4j logo" /> |
| <div class="clear"></div> |
| |
| <div class="navbar"> |
| <div class="navbar-inner"> |
| <div class="container-fluid"> |
| <a class="brand" href="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="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="../articles.html" title="Articles">Articles</a> |
| </li> |
| <li class="none"> |
| <a href="../faq.html" title="FAQ">FAQ</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../performance.html" title="Performance">Performance</a> |
| </li> |
| <li class="none"> |
| <a href="../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="collapsed"> |
| <a href="../manual/garbagefree.html" title="Garbage-free Logging">Garbage-free Logging</a> |
| </li> |
| <li class="none"> |
| <a href="../manual/jmx.html" title="JMX">JMX</a> |
| </li> |
| <li class="none"> |
| <a href="../manual/logsep.html" title="Logging Separation">Logging Separation</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/extending.html" title="Extending Log4j">Extending Log4j</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/plugins.html" title="Plugins">Plugins</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/customconfig.html" title="Programmatic Log4j Configuration">Programmatic Log4j Configuration</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/customloglevels.html" title="Custom Log Levels">Custom Log Levels</a> |
| </li> |
| </ul> |
| <ul class="nav nav-list"> |
| <li class="nav-header"><i class="icon-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.5.</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/jackson/LogEventJsonMixIn.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/jackson/LogEventJsonMixIn.html#L51">51</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/logging/log4j/core/jackson/LogEventMixIn.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/jackson/LogEventMixIn.html#L51">51</a></td></tr> |
| <tr class="b"><td colspan='2'> |
| <div> |
| <pre> @JacksonXmlProperty(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_CONTEXT_MAP) |
| // @JsonSerialize(using = MapSerializer.class) |
| // @JsonDeserialize(using = MapDeserializer.class) |
| @Override |
| public abstract Map<String, String> getContextMap(); |
| |
| @JsonProperty(JsonConstants.ELT_CONTEXT_STACK) |
| @JacksonXmlElementWrapper(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_CONTEXT_STACK) |
| @JacksonXmlProperty(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_CONTEXT_STACK_ITEM) |
| @Override |
| public abstract ContextStack getContextStack(); |
| |
| @JsonProperty() |
| @JacksonXmlProperty(isAttribute = true) |
| @Override |
| public abstract Level getLevel(); |
| |
| @JsonProperty() |
| @JacksonXmlProperty(isAttribute = true) |
| @Override |
| public abstract String getLoggerFqcn(); |
| |
| @JsonProperty() |
| @JacksonXmlProperty(isAttribute = true) |
| @Override |
| public abstract String getLoggerName(); |
| |
| @JsonProperty(JsonConstants.ELT_MARKER) |
| @JacksonXmlProperty(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_MARKER) |
| @Override |
| public abstract Marker getMarker(); |
| |
| @JsonProperty(JsonConstants.ELT_MESSAGE) |
| @JsonSerialize(using = MessageSerializer.class) |
| @JsonDeserialize(using = SimpleMessageDeserializer.class) |
| @JacksonXmlProperty(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_MESSAGE) |
| @Override |
| public abstract Message getMessage(); |
| |
| @JsonProperty(JsonConstants.ELT_SOURCE) |
| @JsonDeserialize(using = Log4jStackTraceElementDeserializer.class) |
| @JacksonXmlProperty(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_SOURCE) |
| @Override |
| public abstract StackTraceElement getSource(); |
| |
| @Override |
| @JsonProperty("threadId") |
| @JacksonXmlProperty(isAttribute = true, localName = "threadId") |
| public abstract long getThreadId(); |
| |
| @Override |
| @JsonProperty("thread") |
| @JacksonXmlProperty(isAttribute = true, localName = "thread") |
| public abstract String getThreadName(); |
| |
| @Override |
| @JsonProperty("threadPriority") |
| @JacksonXmlProperty(isAttribute = true, localName = "threadPriority") |
| public abstract int getThreadPriority(); |
| |
| @JsonIgnore |
| @Override |
| public abstract Throwable getThrown(); |
| |
| @JsonProperty(JsonConstants.ELT_THROWN) |
| @JacksonXmlProperty(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_THROWN) |
| @Override |
| public abstract ThrowableProxy getThrownProxy(); |
| |
| @JsonProperty() |
| @JacksonXmlProperty(isAttribute = true) |
| @Override |
| public abstract long getTimeMillis(); |
| |
| @JsonProperty() |
| @JacksonXmlProperty(isAttribute = true) |
| @Override |
| public abstract boolean isEndOfBatch(); |
| |
| @JsonIgnore |
| @Override |
| public abstract boolean isIncludeLocation(); |
| |
| @Override |
| public abstract void setEndOfBatch(boolean endOfBatch); |
| |
| @Override |
| public abstract void setIncludeLocation(boolean locationRequired); |
| |
| }</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/JsonLayout.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/layout/JsonLayout.html#L814">814</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/logging/log4j/core/layout/YamlLayout.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/layout/YamlLayout.html#L714">714</a></td></tr> |
| <tr class="b"><td colspan='2'> |
| <div> |
| <pre> super(config, new JacksonFactory.JSON(encodeThreadContextAsList).newWriter(locationInfo, properties, compact), |
| charset, compact, complete, eventEol, |
| PatternLayout.createSerializer(config, null, headerPattern, DEFAULT_HEADER, null, false, false), |
| PatternLayout.createSerializer(config, null, footerPattern, DEFAULT_FOOTER, null, false, false)); |
| } |
| |
| /** |
| * Returns appropriate JSON header. |
| * |
| * @return a byte array containing the header, opening the JSON array. |
| */ |
| @Override |
| public byte[] getHeader() { |
| if (!this.complete) { |
| return null; |
| } |
| final StringBuilder buf = new StringBuilder(); |
| final String str = serializeToString(getHeaderSerializer()); |
| if (str != null) { |
| buf.append(str); |
| } |
| buf.append(this.eol); |
| return getBytes(buf.toString()); |
| } |
| |
| /** |
| * Returns appropriate JSON footer. |
| * |
| * @return a byte array containing the footer, closing the JSON array. |
| */ |
| @Override |
| public byte[] getFooter() { |
| if (!this.complete) { |
| return null; |
| } |
| final StringBuilder buf = new StringBuilder(); |
| buf.append(this.eol); |
| final String str = serializeToString(getFooterSerializer()); |
| if (str != null) { |
| buf.append(str); |
| } |
| buf.append(this.eol); |
| return getBytes(buf.toString()); |
| } |
| |
| @Override |
| public Map<String, String> getContentFormat() { |
| final Map<String, String> result = new HashMap<>(); |
| result.put("version", "2.0"); |
| return result; |
| } |
| |
| @Override |
| /** |
| * @return The content type. |
| */ |
| public String getContentType() { |
| return CONTENT_TYPE + "; charset=" + this.getCharset(); |
| } |
| |
| /** |
| * Creates a JSON Layout. |
| * @param config |
| * The plugin configuration. |
| * @param locationInfo |
| * If "true", includes the location information in the generated JSON. |
| * @param properties |
| * If "true", includes the thread context map in the generated JSON. |
| * @param propertiesAsList |
| * If true, the thread context map is included as a list of map entry objects, where each entry has |
| * a "key" attribute (whose value is the key) and a "value" attribute (whose value is the value). |
| * Defaults to false, in which case the thread context map is included as a simple map of key-value |
| * pairs. |
| * @param complete |
| * If "true", includes the JSON header and footer, and comma between records. |
| * @param compact |
| * If "true", does not use end-of-lines and indentation, defaults to "false". |
| * @param eventEol |
| * If "true", forces an EOL after each log event (even if compact is "true"), defaults to "false". This |
| * allows one even per line, even in compact mode. |
| * @param headerPattern |
| * The header pattern, defaults to {@code "["} if null. |
| * @param footerPattern |
| * The header pattern, defaults to {@code "]"} if null. |
| * @param charset |
| * The character set to use, if {@code null}, uses "UTF-8". |
| * @return A JSON Layout. |
| */ |
| @PluginFactory |
| public static JsonLayout createLayout(</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#L1262">1262</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#L1298">1298</a></td></tr> |
| <tr class="b"><td colspan='2'> |
| <div> |
| <pre> final 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)); |
| |
| final int ldom = getLastDayOfMonth(mon, cl.get(Calendar.YEAR)); |
| final int dow = tcal.get(Calendar.DAY_OF_WEEK); |
| |
| if (dow == Calendar.SATURDAY && day == 1) { |
| day += 2; |
| } else if (dow == Calendar.SATURDAY) { |
| day -= 1; |
| } else if (dow == Calendar.SUNDAY && 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); |
| final 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/async/RingBufferLogEvent.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/async/RingBufferLogEvent.html#L206">206</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/logging/log4j/core/impl/MutableLogEvent.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/impl/MutableLogEvent.html#L217">217</a></td></tr> |
| <tr class="b"><td colspan='2'> |
| <div> |
| <pre> } |
| |
| /** |
| * @see ReusableMessage#getFormattedMessage() |
| */ |
| @Override |
| public String getFormattedMessage() { |
| return messageText.toString(); |
| } |
| |
| /** |
| * @see ReusableMessage#getFormat() |
| */ |
| @Override |
| public String getFormat() { |
| return null; |
| } |
| |
| /** |
| * @see ReusableMessage#getParameters() |
| */ |
| @Override |
| public Object[] getParameters() { |
| return parameters == null ? null : Arrays.copyOf(parameters, parameterCount); |
| } |
| |
| /** |
| * @see ReusableMessage#getThrowable() |
| */ |
| @Override |
| public Throwable getThrowable() { |
| return getThrown(); |
| } |
| |
| /** |
| * @see ReusableMessage#formatTo(StringBuilder) |
| */ |
| @Override |
| public void formatTo(final StringBuilder buffer) { |
| buffer.append(messageText); |
| } |
| |
| /** |
| * Replaces this ReusableMessage's parameter array with the specified value and return the original array |
| * @param emptyReplacement the parameter array that can be used for subsequent uses of this reusable message |
| * @return the original parameter array |
| * @see ReusableMessage#swapParameters(Object[]) |
| */ |
| @Override |
| public Object[] swapParameters(final Object[] emptyReplacement) { |
| final Object[] result = this.parameters; |
| this.parameters = emptyReplacement; |
| return result; |
| } |
| |
| /* |
| * @see ReusableMessage#getParameterCount |
| */ |
| @Override |
| public short getParameterCount() { |
| return parameterCount; |
| } |
| |
| @Override |
| public Message memento() { |
| if (message != null) { |
| return message; |
| } |
| final Object[] params = parameters == null ? new Object[0] : Arrays.copyOf(parameters, parameterCount); |
| return new ParameterizedMessage(messageText.toString(), params); |
| } |
| |
| // CharSequence impl |
| |
| @Override |
| public int length() {</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#L57">57</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 (final PatternMatch property : properties) { |
| try { |
| final List<PatternFormatter> list = parser.parse(property.getPattern(), alwaysWriteExceptions, noConsoleNoAnsi); |
| formatterMap.put(property.getKey(), list.toArray(new PatternFormatter[list.size()])); |
| patternMap.put(property.getKey(), property.getPattern()); |
| } catch (final RuntimeException ex) { |
| throw new IllegalArgumentException("Cannot parse pattern '" + property.getPattern() + "'", ex); |
| } |
| } |
| try { |
| final List<PatternFormatter> list = parser.parse(defaultPattern, alwaysWriteExceptions, noConsoleNoAnsi); |
| defaultFormatters = list.toArray(new PatternFormatter[list.size()]); |
| this.defaultPattern = defaultPattern; |
| } catch (final RuntimeException ex) { |
| throw new IllegalArgumentException("Cannot parse pattern '" + defaultPattern + "'", ex); |
| } |
| } |
| |
| @Override |
| public PatternFormatter[] getFormatters(final LogEvent event) { |
| final Marker marker = event.getMarker();</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, "loggerConfig is null"); |
| } |
| |
| /* |
| * (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<LoggerConfig> 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<LoggerConfig> 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<LoggerConfig> 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#L54">54</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#L48">48</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<String, String> configuration = new HashMap<>(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); |
| } |
| } |
| |
| /** |
| * 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()); // FIXME manager's EndOfBatch threadlocal can be deleted |
| super.append(event); // TODO should only call force() if immediateFlush && endOfBatch? |
| } |
| |
| /** |
| * 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/filter/MapFilter.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/filter/MapFilter.html#L127">127</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#L112">112</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#L122">122</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<>(); |
| 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<>(); |
| 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/async/AsyncLoggerConfigDefaultExceptionHandler.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/async/AsyncLoggerConfigDefaultExceptionHandler.html#L29">29</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/logging/log4j/core/async/AsyncLoggerDefaultExceptionHandler.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/async/AsyncLoggerDefaultExceptionHandler.html#L27">27</a></td></tr> |
| <tr class="a"><td colspan='2'> |
| <div> |
| <pre> final AsyncLoggerConfigDisruptor.Log4jEventWrapper event) { |
| final StringBuilder sb = new StringBuilder(512); |
| sb.append("AsyncLogger error handling event seq=").append(sequence).append(", value='"); |
| try { |
| sb.append(event); |
| } catch (final Exception ignored) { |
| sb.append("[ERROR calling ").append(event.getClass()).append(".toString(): "); |
| sb.append(ignored).append("]"); |
| } |
| sb.append("':"); |
| System.err.println(sb); |
| throwable.printStackTrace(); |
| } |
| |
| @Override |
| public void handleOnStartException(final Throwable throwable) { |
| System.err.println("AsyncLogger error starting:"); |
| throwable.printStackTrace(); |
| } |
| |
| @Override |
| public void handleOnShutdownException(final Throwable throwable) { |
| System.err.println("AsyncLogger error shutting down:"); |
| throwable.printStackTrace(); |
| } |
| }</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/layout/MarkerPatternSelector.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/layout/MarkerPatternSelector.html#L103">103</a></td></tr> |
| <tr class="b"> |
| <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="a"><td colspan='2'> |
| <div> |
| <pre> return new MarkerPatternSelector(properties, defaultPattern, alwaysWriteExceptions, |
| noConsoleNoAnsi, config); |
| } |
| |
| @Override |
| public String toString() { |
| final StringBuilder sb = new StringBuilder(); |
| boolean first = true; |
| for (final Map.Entry<String, String> entry : patternMap.entrySet()) { |
| if (!first) { |
| sb.append(", "); |
| } |
| sb.append("key=\"").append(entry.getKey()).append("\", pattern=\"").append(entry.getValue()).append("\""); |
| first = false; |
| } |
| if (!first) { |
| sb.append(", "); |
| } |
| sb.append("default=\"").append(defaultPattern).append("\""); |
| return sb.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/appender/FileAppender.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/appender/FileAppender.html#L48">48</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#L54">54</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#L48">48</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<String, String> configuration = new HashMap<>(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="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#L53">53</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 |
| @PluginConfiguration final Configuration config, |
| @PluginAttribute(value = "format", defaultString = DEFAULT_FORMAT) final String format, |
| @PluginAttribute("delimiter") final Character delimiter, |
| @PluginAttribute("escape") final Character escape, |
| @PluginAttribute("quote") final Character quote, |
| @PluginAttribute("quoteMode") final QuoteMode quoteMode, |
| @PluginAttribute("nullString") final String nullString, |
| @PluginAttribute("recordSeparator") final String recordSeparator, |
| @PluginAttribute(value = "charset", defaultString = DEFAULT_CHARSET) final Charset charset, |
| @PluginAttribute("header") final String header, |
| @PluginAttribute("footer") final String footer) |
| // @formatter:on |
| { |
| |
| final CSVFormat csvFormat = createFormat(format, delimiter, escape, quote, quoteMode, nullString, recordSeparator); |
| return new CsvLogEventLayout(config, 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/BurstFilter.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/filter/BurstFilter.html#L93">93</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#L46">46</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/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(final Supplier<LoggerConfig> reconfigured, final String loggerName, final String fqcn, final Marker marker, final Level level, |
| final Message data, final 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(final Supplier<LoggerConfig> reconfigured, final 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(final Supplier<LoggerConfig> 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(final 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/appender/RollingFileAppender.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/appender/RollingFileAppender.html#L162">162</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#L178">178</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), 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/net/server/TcpSocketServer.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/net/server/TcpSocketServer.html#L171">171</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 < 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/async/RingBufferLogEvent.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/async/RingBufferLogEvent.html#L115">115</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/logging/log4j/core/impl/MutableLogEvent.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/impl/MutableLogEvent.html#L192">192</a></td></tr> |
| <tr class="b"><td colspan='2'> |
| <div> |
| <pre> private void setMessage(final Message msg) { |
| if (msg instanceof ReusableMessage) { |
| final ReusableMessage reusable = (ReusableMessage) msg; |
| reusable.formatTo(getMessageTextForWriting()); |
| if (parameters != null) { |
| parameters = reusable.swapParameters(parameters); |
| parameterCount = reusable.getParameterCount(); |
| } |
| } else { |
| // if the Message instance is reused, there is no point in freezing its message here |
| if (!Constants.FORMAT_MESSAGES_IN_BACKGROUND && msg != null) { // LOG4J2-898: user may choose |
| msg.getFormattedMessage(); // LOG4J2-763: ask message to freeze parameters |
| } |
| this.message = msg; |
| } |
| } |
| |
| private StringBuilder getMessageTextForWriting() { |
| if (messageText == null) { |
| // Should never happen: |
| // only happens if user logs a custom reused message when Constants.ENABLE_THREADLOCALS is false |
| messageText = new StringBuilder(Constants.INITIAL_REUSABLE_MESSAGE_SIZE); |
| } |
| messageText.setLength(0); |
| return messageText; |
| }</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#L1360">1360</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#L1451">1451</a></td></tr> |
| <tr class="b"><td colspan='2'> |
| <div> |
| <pre> int daysToAdd = 0; |
| if (cDow < dow) { |
| daysToAdd = dow - cDow; |
| } |
| if (cDow > dow) { |
| daysToAdd = dow + (7 - cDow); |
| } |
| |
| final int lDay = getLastDayOfMonth(mon, cl.get(Calendar.YEAR)); |
| |
| if (day + daysToAdd > 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#L768">768</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#L794">794</a></td></tr> |
| <tr class="b"><td colspan='2'> |
| <div> |
| <pre> if (i < s.length() && ((c = s.charAt(i)) == '/')) { |
| i++; |
| c = s.charAt(i); |
| final int v2 = Integer.parseInt(String.valueOf(c)); |
| i++; |
| if (i >= s.length()) { |
| addToSet(val, end, v2, type); |
| return i; |
| } |
| c = s.charAt(i); |
| if (c >= '0' && c <= '9') { |
| final ValueSet vs = getValue(v2, s, i); |
| final 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/config/composite/CompositeConfiguration.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.html#L85">85</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/logging/log4j/core/config/xml/XmlConfiguration.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/config/xml/XmlConfiguration.html#L117">117</a></td></tr> |
| <tr class="b"><td colspan='2'> |
| <div> |
| <pre> statusConfig.withStatus(value.toUpperCase()); |
| } else if ("dest".equalsIgnoreCase(key)) { |
| statusConfig.withDestination(value); |
| } else if ("shutdownHook".equalsIgnoreCase(key)) { |
| isShutdownHookEnabled = !"disable".equalsIgnoreCase(value); |
| } else if ("verbose".equalsIgnoreCase(key)) { |
| statusConfig.withVerbosity(value); |
| } else if ("packages".equalsIgnoreCase(key)) { |
| pluginPackages.addAll(Arrays.asList(value.split(Patterns.COMMA_SEPARATOR))); |
| } else if ("name".equalsIgnoreCase(key)) { |
| setName(value); |
| }</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/PatternLayout.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/layout/PatternLayout.html#L286">286</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/logging/log4j/core/layout/PatternLayout.java</td> |
| <td><a href="./xref/org/apache/logging/log4j/core/layout/PatternLayout.html#L331">331</a></td></tr> |
| <tr class="b"><td colspan='2'> |
| <div> |
| <pre> final int len = formatters.length; |
| for (int i = 0; i < len; i++) { |
| formatters[i].format(event, buffer); |
| } |
| if (replace != null) { // creates temporary objects |
| String str = buffer.toString(); |
| str = replace.format(str); |
| buffer.setLength(0); |
| buffer.append(str); |
| } |
| return buffer; |
| } |
| |
| @Override |
| public String toString() { |
| final StringBuilder builder = new StringBuilder(); |
| builder.append(super.toString()); |
| builder.append("[formatters=");</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#L143">143</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#L162">162</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-2016 <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> |