You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2016/11/14 23:11:50 UTC
[1/2] logging-log4j2 git commit: maven-resources-plugin 2.7 -> 3.0.1
Repository: logging-log4j2
Updated Branches:
refs/heads/master 7b6175398 -> ed828be67
maven-resources-plugin 2.7 -> 3.0.1
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/2b595b64
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/2b595b64
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/2b595b64
Branch: refs/heads/master
Commit: 2b595b6402a5ac91bae9c168c9a97e1c93e2d07a
Parents: 7b61753
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Nov 14 15:09:08 2016 -0800
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Nov 14 15:09:08 2016 -0800
----------------------------------------------------------------------
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2b595b64/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 323677f..96c2e4b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -982,7 +982,7 @@
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
- <version>2.7</version>
+ <version>3.0.1</version>
<executions>
<execution>
<id>copy-sitecss</id>
[2/2] logging-log4j2 git commit: [LOG4J2-1709]
Posted by gg...@apache.org.
[LOG4J2-1709]
Add a Builder to SyslogAppender and deprecate
SyslogAppender.createAppender().
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/ed828be6
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/ed828be6
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/ed828be6
Branch: refs/heads/master
Commit: ed828be67a23ee3513cafc9d2fd0ff16a26c7013
Parents: 2b595b6
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Nov 14 15:11:47 2016 -0800
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Nov 14 15:11:47 2016 -0800
----------------------------------------------------------------------
.../log4j/core/appender/SocketAppender.java | 101 +++--
.../log4j/core/appender/SyslogAppender.java | 408 +++++++++++++++----
src/changes/changes.xml | 3 +
3 files changed, 386 insertions(+), 126 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ed828be6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
index 079ceee..8037475 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
@@ -21,6 +21,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+import org.apache.logging.log4j.core.AbstractLifeCycle;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.Core;
import org.apache.logging.log4j.core.Filter;
@@ -54,14 +55,15 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
/**
* Subclasses can extend this abstract Builder.
*
- * Removed deprecated "delayMillis", use "reconnectionDelayMillis".
- * Removed deprecated "reconnectionDelay", use "reconnectionDelayMillis".
+ * <ul>
+ * <li>Removed deprecated "delayMillis", use "reconnectionDelayMillis".</li>
+ * <li>Removed deprecated "reconnectionDelay", use "reconnectionDelayMillis".</li>
+ * </ul>
*
* @param <B>
- * This builder class.
+ * The type to build.
*/
- public static class Builder<B extends Builder<B>> extends AbstractOutputStreamAppender.Builder<B>
- implements org.apache.logging.log4j.core.util.Builder<SocketAppender> {
+ public static abstract class AbstractBuilder<B extends AbstractBuilder<B>> extends AbstractOutputStreamAppender.Builder<B> {
@PluginBuilderAttribute
private boolean advertise;
@@ -85,7 +87,7 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
private Protocol protocol = Protocol.TCP;
@PluginBuilderAttribute
- @PluginAliases({ "reconnectDelay, delayMillis" })
+ @PluginAliases({ "reconnectDelay, reconnectionDelay, delayMillis" })
private int reconnectDelayMillis;
@PluginElement("SocketOptions")
@@ -95,34 +97,6 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
@PluginAliases({ "SslConfig" })
private SslConfiguration sslConfiguration;
- @SuppressWarnings("resource")
- @Override
- public SocketAppender build() {
- boolean immediateFlush = isImmediateFlush();
- final boolean bufferedIo = isBufferedIo();
- Layout<? extends Serializable> layout = getLayout();
- if (layout == null) {
- layout = SerializedLayout.createLayout();
- }
-
- final String name = getName();
- if (name == null) {
- SocketAppender.LOGGER.error("No name provided for SocketAppender");
- return null;
- }
-
- final Protocol actualProtocol = protocol != null ? protocol : Protocol.TCP;
- if (actualProtocol == Protocol.UDP) {
- immediateFlush = true;
- }
-
- final AbstractSocketManager manager = SocketAppender.createSocketManager(name, actualProtocol, host, port,
- connectTimeoutMillis, sslConfiguration, reconnectDelayMillis, immediateFail, layout, getBufferSize(), socketOptions);
-
- return new SocketAppender(name, layout, getFilter(), manager, isIgnoreExceptions(),
- !bufferedIo || immediateFlush, advertise ? configuration.getAdvertiser() : null);
- }
-
public boolean getAdvertise() {
return advertise;
}
@@ -200,11 +174,64 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
this.sslConfiguration = sslConfiguration;
return asBuilder();
}
+
+ public int getReconnectDelayMillis() {
+ return reconnectDelayMillis;
+ }
+
+ public SocketOptions getSocketOptions() {
+ return socketOptions;
+ }
+
+ public Configuration getConfiguration() {
+ return configuration;
+ }
+
+ }
+
+ /**
+ * Builds a SocketAppender.
+ * <ul>
+ * <li>Removed deprecated "delayMillis", use "reconnectionDelayMillis".</li>
+ * <li>Removed deprecated "reconnectionDelay", use "reconnectionDelayMillis".</li>
+ * </ul>
+ */
+ public static class Builder extends AbstractBuilder<Builder>
+ implements org.apache.logging.log4j.core.util.Builder<SocketAppender> {
+
+ @SuppressWarnings("resource")
+ @Override
+ public SocketAppender build() {
+ boolean immediateFlush = isImmediateFlush();
+ final boolean bufferedIo = isBufferedIo();
+ Layout<? extends Serializable> layout = getLayout();
+ if (layout == null) {
+ layout = SerializedLayout.createLayout();
+ }
+
+ final String name = getName();
+ if (name == null) {
+ AbstractLifeCycle.LOGGER.error("No name provided for SocketAppender");
+ return null;
+ }
+
+ final Protocol protocol = getProtocol();
+ final Protocol actualProtocol = protocol != null ? protocol : Protocol.TCP;
+ if (actualProtocol == Protocol.UDP) {
+ immediateFlush = true;
+ }
+
+ final AbstractSocketManager manager = SocketAppender.createSocketManager(name, actualProtocol, getHost(), getPort(),
+ getConnectTimeoutMillis(), getSslConfiguration(), getReconnectDelayMillis(), getImmediateFail(), layout, getBufferSize(), getSocketOptions());
+
+ return new SocketAppender(name, layout, getFilter(), manager, isIgnoreExceptions(),
+ !bufferedIo || immediateFlush, getAdvertise() ? getConfiguration().getAdvertiser() : null);
+ }
}
@PluginBuilderFactory
- public static <B extends Builder<B>> B newBuilder() {
- return new Builder<B>().asBuilder();
+ public static Builder newBuilder() {
+ return new Builder();
}
private final Object advertisement;
@@ -384,7 +411,7 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
* @deprecated Use {@link #createSocketManager(String, Protocol, String, int, int, SslConfiguration, int, boolean, Layout, int, SocketOptions)}.
*/
@Deprecated
- protected static AbstractSocketManager createSocketManager(final String name, Protocol protocol, final String host,
+ protected static AbstractSocketManager createSocketManager(final String name, final Protocol protocol, final String host,
final int port, final int connectTimeoutMillis, final SslConfiguration sslConfig, final int reconnectDelayMillis,
final boolean immediateFail, final Layout<? extends Serializable> layout, final int bufferSize) {
return createSocketManager(name, protocol, host, port, connectTimeoutMillis, sslConfig, reconnectDelayMillis, immediateFail, layout, bufferSize, null);
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ed828be6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
index 6df591d..2fc73d8 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
@@ -18,20 +18,17 @@ package org.apache.logging.log4j.core.appender;
import java.io.Serializable;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.Core;
import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.core.Layout;
-import org.apache.logging.log4j.core.appender.SocketAppender.Builder;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.plugins.Plugin;
-import org.apache.logging.log4j.core.config.plugins.PluginAliases;
-import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
-import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
import org.apache.logging.log4j.core.config.plugins.PluginElement;
-import org.apache.logging.log4j.core.config.plugins.PluginFactory;
import org.apache.logging.log4j.core.layout.LoggerFields;
import org.apache.logging.log4j.core.layout.Rfc5424Layout;
import org.apache.logging.log4j.core.layout.SyslogLayout;
@@ -39,7 +36,6 @@ import org.apache.logging.log4j.core.net.AbstractSocketManager;
import org.apache.logging.log4j.core.net.Advertiser;
import org.apache.logging.log4j.core.net.Facility;
import org.apache.logging.log4j.core.net.Protocol;
-import org.apache.logging.log4j.core.net.SocketOptions;
import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
import org.apache.logging.log4j.core.util.Constants;
import org.apache.logging.log4j.util.EnglishEnums;
@@ -50,37 +46,247 @@ import org.apache.logging.log4j.util.EnglishEnums;
@Plugin(name = "Syslog", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE, printObject = true)
public class SyslogAppender extends SocketAppender {
- public static class Builder<B extends Builder<B>> extends AbstractOutputStreamAppender.Builder<B>
- implements org.apache.logging.log4j.core.util.Builder<SyslogAppender> {
-
-// @PluginAliases("reconnectionDelay") // deprecated
-// @PluginAttribute("name") final String name,
-// @PluginAttribute(value = "immediateFlush", defaultBoolean = true) final boolean immediateFlush,
-// @PluginAttribute(value = "ignoreExceptions", defaultBoolean = true) final boolean ignoreExceptions,
-// @PluginAttribute(value = "facility", defaultString = "LOCAL0") final Facility facility,
-// @PluginAttribute("id") final String id,
-// @PluginAttribute(value = "enterpriseNumber", defaultInt = Rfc5424Layout.DEFAULT_ENTERPRISE_NUMBER) final int enterpriseNumber,
-// @PluginAttribute(value = "includeMdc", defaultBoolean = true) final boolean includeMdc,
-// @PluginAttribute("mdcId") final String mdcId,
-// @PluginAttribute("mdcPrefix") final String mdcPrefix,
-// @PluginAttribute("eventPrefix") final String eventPrefix,
-// @PluginAttribute(value = "newLine") final boolean newLine,
-// @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("Filter") final Filter filter,
-// @PluginAttribute(value = "charset", defaultString = "UTF-8") final Charset charsetName,
-// @PluginAttribute("exceptionPattern") final String exceptionPattern,
-// @PluginElement("LoggerFields") final LoggerFields[] loggerFields,
+ public static class Builder extends AbstractBuilder<Builder>
+ implements org.apache.logging.log4j.core.util.Builder<SocketAppender> {
+
+ @PluginBuilderAttribute(value = "facility")
+ private Facility facility = Facility.LOCAL0;
+
+ @PluginBuilderAttribute("id")
+ private String id;
+
+ @PluginBuilderAttribute(value = "enterpriseNumber")
+ private int enterpriseNumber = Rfc5424Layout.DEFAULT_ENTERPRISE_NUMBER;
+
+ @PluginBuilderAttribute(value = "includeMdc")
+ private boolean includeMdc = true;
+
+ @PluginBuilderAttribute("mdcId")
+ private String mdcId;
+
+ @PluginBuilderAttribute("mdcPrefix")
+ private String mdcPrefix;
+
+ @PluginBuilderAttribute("eventPrefix")
+ private String eventPrefix;
+
+ @PluginBuilderAttribute(value = "newLine")
+ private boolean newLine;
+
+ @PluginBuilderAttribute("newLineEscape")
+ private String escapeNL;
+
+ @PluginBuilderAttribute("appName")
+ private String appName;
+
+ @PluginBuilderAttribute("messageId")
+ private String msgId;
+
+ @PluginBuilderAttribute("mdcExcludes")
+ private String excludes;
+
+ @PluginBuilderAttribute("mdcIncludes")
+ private String includes;
+
+ @PluginBuilderAttribute("mdcRequired")
+ private String required;
+
+ @PluginBuilderAttribute("format")
+ private String format;
+
+ @PluginBuilderAttribute("charset")
+ private Charset charsetName = StandardCharsets.UTF_8;
+
+ @PluginBuilderAttribute("exceptionPattern")
+ private String exceptionPattern;
+
+ @PluginElement("LoggerFields")
+ private LoggerFields[] loggerFields;
@Override
- public SyslogAppender build() {
- // TODO Auto-generated method stub
- return null;
+ public SyslogAppender build() {
+ final Protocol protocol = getProtocol();
+ final SslConfiguration sslConfiguration = getSslConfiguration();
+ final boolean useTlsMessageFormat = sslConfiguration != null || protocol == Protocol.SSL;
+ final Configuration configuration = getConfiguration();
+ final Layout<? extends Serializable> layout = RFC5424.equalsIgnoreCase(format) ?
+ Rfc5424Layout.createLayout(facility, id, enterpriseNumber, includeMdc, mdcId, mdcPrefix, eventPrefix, newLine,
+ escapeNL, appName, msgId, excludes, includes, required, exceptionPattern, useTlsMessageFormat, loggerFields,
+ configuration) :
+ SyslogLayout.createLayout(facility, newLine, escapeNL, charsetName);
+
+ final String name = getName();
+ if (name == null) {
+ LOGGER.error("No name provided for SyslogAppender");
+ return null;
+ }
+ final AbstractSocketManager manager = createSocketManager(name, protocol, getHost(), getPort(), getConnectTimeoutMillis(),
+ sslConfiguration, getReconnectDelayMillis(), getImmediateFail(), layout, Constants.ENCODER_BYTE_BUFFER_SIZE, null);
+
+ return new SyslogAppender(name, layout, getFilter(), isIgnoreExceptions(), isImmediateFlush(), manager,
+ getAdvertise() ? configuration.getAdvertiser() : null);
+ }
+
+ public Facility getFacility() {
+ return facility;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public int getEnterpriseNumber() {
+ return enterpriseNumber;
+ }
+
+ public boolean isIncludeMdc() {
+ return includeMdc;
+ }
+
+ public String getMdcId() {
+ return mdcId;
+ }
+
+ public String getMdcPrefix() {
+ return mdcPrefix;
+ }
+
+ public String getEventPrefix() {
+ return eventPrefix;
+ }
+
+ public boolean isNewLine() {
+ return newLine;
+ }
+
+ public String getEscapeNL() {
+ return escapeNL;
+ }
+
+ public String getAppName() {
+ return appName;
+ }
+
+ public String getMsgId() {
+ return msgId;
+ }
+
+ public String getExcludes() {
+ return excludes;
+ }
+
+ public String getIncludes() {
+ return includes;
+ }
+
+ public String getRequired() {
+ return required;
+ }
+
+ public String getFormat() {
+ return format;
+ }
+
+ public Charset getCharsetName() {
+ return charsetName;
+ }
+
+ public String getExceptionPattern() {
+ return exceptionPattern;
+ }
+
+ public LoggerFields[] getLoggerFields() {
+ return loggerFields;
+ }
+
+ public Builder setFacility(Facility facility) {
+ this.facility = facility;
+ return this;
+ }
+
+ public Builder setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public Builder setEnterpriseNumber(int enterpriseNumber) {
+ this.enterpriseNumber = enterpriseNumber;
+ return this;
+ }
+
+ public Builder setIncludeMdc(boolean includeMdc) {
+ this.includeMdc = includeMdc;
+ return this;
+ }
+
+ public Builder setMdcId(String mdcId) {
+ this.mdcId = mdcId;
+ return this;
+ }
+
+ public Builder setMdcPrefix(String mdcPrefix) {
+ this.mdcPrefix = mdcPrefix;
+ return this;
+ }
+
+ public Builder setEventPrefix(String eventPrefix) {
+ this.eventPrefix = eventPrefix;
+ return this;
+ }
+
+ public Builder setNewLine(boolean newLine) {
+ this.newLine = newLine;
+ return this;
+ }
+
+ public Builder setEscapeNL(String escapeNL) {
+ this.escapeNL = escapeNL;
+ return this;
+ }
+
+ public Builder setAppName(String appName) {
+ this.appName = appName;
+ return this;
+ }
+
+ public Builder setMsgId(String msgId) {
+ this.msgId = msgId;
+ return this;
+ }
+
+ public Builder setExcludes(String excludes) {
+ this.excludes = excludes;
+ return this;
+ }
+
+ public Builder setIncludes(String includes) {
+ this.includes = includes;
+ return this;
+ }
+
+ public Builder setRequired(String required) {
+ this.required = required;
+ return this;
+ }
+
+ public Builder setFormat(String format) {
+ this.format = format;
+ return this;
+ }
+
+ public Builder setCharsetName(Charset charset) {
+ this.charsetName = charset;
+ return this;
+ }
+
+ public Builder setExceptionPattern(String exceptionPattern) {
+ this.exceptionPattern = exceptionPattern;
+ return this;
+ }
+
+ public Builder setLoggerFields(LoggerFields[] loggerFields) {
+ this.loggerFields = loggerFields;
+ return this;
}
}
@@ -98,9 +304,9 @@ public class SyslogAppender extends SocketAppender {
* @param host The name of the host to connect to.
* @param port The port to connect to on the target host.
* @param protocolStr The Protocol to use.
- * @param sslConfig TODO
+ * @param sslConfiguration TODO
* @param connectTimeoutMillis the connect timeout in milliseconds.
- * @param reconnectionDelayMillis The interval in which failed writes should be retried.
+ * @param reconnectDelayMillis The interval in which failed writes should be retried.
* @param immediateFail True if the write should fail if no socket is immediately available.
* @param name The name of the Appender.
* @param immediateFlush "true" if data should be flushed on each write.
@@ -124,66 +330,90 @@ public class SyslogAppender extends SocketAppender {
* @param format If set to "RFC5424" the data will be formatted in accordance with RFC 5424. Otherwise,
* it will be formatted as a BSD Syslog record.
* @param filter A Filter to determine if the event should be handled by this Appender.
- * @param config The Configuration.
- * @param charsetName The character set to use when converting the syslog String to a byte array.
+ * @param configuration The Configuration.
+ * @param charset The character set to use when converting the syslog String to a byte array.
* @param exceptionPattern The converter pattern to use for formatting exceptions.
* @param loggerFields The logger fields
* @param advertise Whether to advertise
* @return A SyslogAppender.
+ * @deprecated Use {@link #newSyslogAppenderBuilder()}.
*/
- @PluginFactory
+ @Deprecated
public static SyslogAppender createAppender(
// @formatter:off
- @PluginAttribute("host") final String host,
- @PluginAttribute(value = "port", defaultInt = 0) final int port,
- @PluginAttribute("protocol") final String protocolStr,
- @PluginElement("SSL") final SslConfiguration sslConfig,
- @PluginAttribute(value = "connectTimeoutMillis", defaultInt = 0) final int connectTimeoutMillis,
- @PluginAliases("reconnectionDelay") // deprecated
- @PluginAttribute(value = "reconnectionDelayMillis", defaultInt = 0) final int reconnectionDelayMillis,
- @PluginAttribute(value = "immediateFail", defaultBoolean = true) final boolean immediateFail,
- @PluginAttribute("name") final String name,
- @PluginAttribute(value = "immediateFlush", defaultBoolean = true) final boolean immediateFlush,
- @PluginAttribute(value = "ignoreExceptions", defaultBoolean = true) final boolean ignoreExceptions,
- @PluginAttribute(value = "facility", defaultString = "LOCAL0") final Facility facility,
- @PluginAttribute("id") final String id,
- @PluginAttribute(value = "enterpriseNumber", defaultInt = Rfc5424Layout.DEFAULT_ENTERPRISE_NUMBER) final int enterpriseNumber,
- @PluginAttribute(value = "includeMdc", defaultBoolean = true) final boolean includeMdc,
- @PluginAttribute("mdcId") final String mdcId,
- @PluginAttribute("mdcPrefix") final String mdcPrefix,
- @PluginAttribute("eventPrefix") final String eventPrefix,
- @PluginAttribute(value = "newLine") final boolean newLine,
- @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("Filter") final Filter filter,
- @PluginConfiguration final Configuration config,
- @PluginAttribute(value = "charset", defaultString = "UTF-8") final Charset charsetName,
- @PluginAttribute("exceptionPattern") final String exceptionPattern,
- @PluginElement("LoggerFields") final LoggerFields[] loggerFields,
- @PluginAttribute(value = "advertise") final boolean advertise) {
+ final String host,
+ final int port,
+ final String protocolStr,
+ final SslConfiguration sslConfiguration,
+ final int connectTimeoutMillis,
+ final int reconnectDelayMillis,
+ final boolean immediateFail,
+ final String name,
+ final boolean immediateFlush,
+ final boolean ignoreExceptions,
+ final Facility facility,
+ final String id,
+ final int enterpriseNumber,
+ final boolean includeMdc,
+ final String mdcId,
+ final String mdcPrefix,
+ final String eventPrefix,
+ final boolean newLine,
+ final String escapeNL,
+ final String appName,
+ final String msgId,
+ final String excludes,
+ final String includes,
+ final String required,
+ final String format,
+ final Filter filter,
+ final Configuration configuration,
+ final Charset charset,
+ final String exceptionPattern,
+ final LoggerFields[] loggerFields,
+ final boolean advertise) {
// @formatter:on
- final Protocol protocol = EnglishEnums.valueOf(Protocol.class, protocolStr);
- final boolean useTlsMessageFormat = sslConfig != null || protocol == Protocol.SSL;
- final Layout<? extends Serializable> layout = RFC5424.equalsIgnoreCase(format) ?
- Rfc5424Layout.createLayout(facility, id, enterpriseNumber, includeMdc, mdcId, mdcPrefix, eventPrefix, newLine,
- escapeNL, appName, msgId, excludes, includes, required, exceptionPattern, useTlsMessageFormat, loggerFields,
- config) :
- SyslogLayout.createLayout(facility, newLine, escapeNL, charsetName);
-
- if (name == null) {
- LOGGER.error("No name provided for SyslogAppender");
- return null;
- }
- final AbstractSocketManager manager = createSocketManager(name, protocol, host, port, connectTimeoutMillis,
- sslConfig, reconnectionDelayMillis, immediateFail, layout, Constants.ENCODER_BYTE_BUFFER_SIZE);
-
- return new SyslogAppender(name, layout, filter, ignoreExceptions, immediateFlush, manager,
- advertise ? config.getAdvertiser() : null);
+ // @formatter:off
+ return newSyslogAppenderBuilder()
+ .withHost(host)
+ .withPort(port)
+ .withProtocol(EnglishEnums.valueOf(Protocol.class, protocolStr))
+ .withSslConfiguration(sslConfiguration)
+ .withConnectTimeoutMillis(connectTimeoutMillis)
+ .withReconnectDelayMillis(reconnectDelayMillis)
+ .withImmediateFail(immediateFail)
+ .withName(appName)
+ .withImmediateFlush(immediateFlush)
+ .withIgnoreExceptions(ignoreExceptions)
+ .withFilter(filter)
+ .withConfiguration(configuration)
+ .withAdvertise(advertise)
+ .setFacility(facility)
+ .setId(id)
+ .setEnterpriseNumber(enterpriseNumber)
+ .setIncludeMdc(includeMdc)
+ .setMdcId(mdcId)
+ .setMdcPrefix(mdcPrefix)
+ .setEventPrefix(eventPrefix)
+ .setNewLine(newLine)
+ .setAppName(appName)
+ .setMsgId(msgId)
+ .setExcludes(excludes)
+ .setIncludeMdc(includeMdc)
+ .setRequired(required)
+ .setFormat(format)
+ .setCharsetName(charset)
+ .setExceptionPattern(exceptionPattern)
+ .setLoggerFields(loggerFields)
+ .build();
+ // @formatter:on
}
+
+ // Calling this method newBuilder() does not compile
+ @PluginBuilderFactory
+ public static Builder newSyslogAppenderBuilder() {
+ return new Builder();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ed828be6/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6002d02..10ee145 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -150,6 +150,9 @@
<action issue="LOG4J2-1704" dev="ggregory" type="add">
Add a Builder to RollingRandomAccessFileAppender and deprecate RollingRandomAccessFileAppender.createAppender().
</action>
+ <action issue="LOG4J2-1709" dev="ggregory" type="add">
+ Add a Builder to SyslogAppender and deprecate SyslogAppender.createAppender().
+ </action>
<action issue="LOG4J2-1707" dev="ggregory" type="add">
Allow TCP Socket Appender to set socket options.
</action>