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/12 10:42:37 UTC
logging-log4j2 git commit: [LOG4J2-1704]
Repository: logging-log4j2
Updated Branches:
refs/heads/master 94034c08e -> 4f7816264
[LOG4J2-1704]
Add a Builder to RollingRandomAccessFileAppender and deprecate
RollingRandomAccessFileAppender.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/4f781626
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/4f781626
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/4f781626
Branch: refs/heads/master
Commit: 4f7816264c8776ed2c460e4c239b6502fe07d589
Parents: 94034c0
Author: Gary Gregory <gg...@apache.org>
Authored: Sat Nov 12 02:42:33 2016 -0800
Committer: Gary Gregory <gg...@apache.org>
Committed: Sat Nov 12 02:42:33 2016 -0800
----------------------------------------------------------------------
.../RollingRandomAccessFileAppender.java | 218 ++++++++++++++-----
src/changes/changes.xml | 3 +
2 files changed, 164 insertions(+), 57 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4f781626/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
index ea984e3..490893a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
@@ -34,9 +34,10 @@ import org.apache.logging.log4j.core.appender.rolling.TriggeringPolicy;
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.PluginAttribute;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
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.PatternLayout;
import org.apache.logging.log4j.core.net.Advertiser;
import org.apache.logging.log4j.core.util.Booleans;
@@ -49,6 +50,126 @@ import org.apache.logging.log4j.core.util.Integers;
@Plugin(name = "RollingRandomAccessFile", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE, printObject = true)
public final class RollingRandomAccessFileAppender extends AbstractOutputStreamAppender<RollingRandomAccessFileManager> {
+ public static class Builder<B extends Builder<B>> extends AbstractOutputStreamAppender.Builder<B>
+ implements org.apache.logging.log4j.core.util.Builder<RollingRandomAccessFileAppender> {
+
+ public Builder() {
+ super();
+ withBufferSize(RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE);
+ withIgnoreExceptions(true);
+ withImmediateFlush(true);
+ }
+
+ @PluginBuilderAttribute("fileName")
+ private String fileName;
+
+ @PluginBuilderAttribute("filePattern")
+ private String filePattern;
+
+ @PluginBuilderAttribute("append")
+ private boolean append = true;
+
+ @PluginElement("Policy")
+ private TriggeringPolicy policy;
+
+ @PluginElement("Strategy")
+ private RolloverStrategy strategy;
+
+ @PluginBuilderAttribute("advertise")
+ private boolean advertise;
+
+ @PluginBuilderAttribute("advertiseURI")
+ private String advertiseURI;
+
+ @PluginConfiguration
+ private Configuration configuration;
+
+ @Override
+ public RollingRandomAccessFileAppender build() {
+ final String name = getName();
+ 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, configuration);
+ }
+
+ final Layout<? extends Serializable> layout = getOrCreateLayout();
+
+ final boolean immediateFlush = isImmediateFlush();
+ final int bufferSize = getBufferSize();
+ final RollingRandomAccessFileManager manager = RollingRandomAccessFileManager
+ .getRollingRandomAccessFileManager(fileName, filePattern, append, immediateFlush, bufferSize, policy,
+ strategy, advertiseURI, layout, configuration);
+ if (manager == null) {
+ return null;
+ }
+
+ manager.initialize();
+
+ return new RollingRandomAccessFileAppender(name, layout,getFilter(), manager, fileName, filePattern,
+ isIgnoreExceptions(), immediateFlush, bufferSize, advertise ? configuration.getAdvertiser() : null);
+ }
+
+ public B withFileName(final String fileName) {
+ this.fileName = fileName;
+ return asBuilder();
+ }
+
+ public B withFilePattern(final String filePattern) {
+ this.filePattern = filePattern;
+ return asBuilder();
+ }
+
+ public B withAppend(final boolean append) {
+ this.append = append;
+ return asBuilder();
+ }
+
+ public B withPolicy(final TriggeringPolicy policy) {
+ this.policy = policy;
+ return asBuilder();
+ }
+
+ public B withStrategy(final RolloverStrategy strategy) {
+ this.strategy = strategy;
+ return asBuilder();
+ }
+
+ public B withAdvertise(final boolean advertise) {
+ this.advertise = advertise;
+ return asBuilder();
+ }
+
+ public B withAdvertiseURI(final String advertiseURI) {
+ this.advertiseURI = advertiseURI;
+ return asBuilder();
+ }
+
+ public B withConfiguration(final Configuration configuration) {
+ this.configuration = configuration;
+ return asBuilder();
+ }
+ }
+
private final String fileName;
private final String filePattern;
private final Object advertisement;
@@ -155,25 +276,26 @@ public final class RollingRandomAccessFileAppender extends AbstractOutputStreamA
* advertised, "false" otherwise.
* @param advertiseURI The advertised URI which can be used to retrieve the
* file contents.
- * @param config The Configuration.
+ * @param configuration The Configuration.
* @return A RollingRandomAccessFileAppender.
+ * @deprecated Use {@link #newBuilder()}.
*/
- @PluginFactory
+ @Deprecated
public static RollingRandomAccessFileAppender createAppender(
- @PluginAttribute("fileName") final String fileName,
- @PluginAttribute("filePattern") final String filePattern,
- @PluginAttribute("append") final String append,
- @PluginAttribute("name") final String name,
- @PluginAttribute("immediateFlush") final String immediateFlush,
- @PluginAttribute("bufferSize") final String bufferSizeStr,
- @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 String fileName,
+ final String filePattern,
+ final String append,
+ final String name,
+ final String immediateFlush,
+ final String bufferSizeStr,
+ final TriggeringPolicy policy,
+ RolloverStrategy strategy,
+ Layout<? extends Serializable> layout,
+ final Filter filter,
+ final String ignore,
+ final String advertise,
+ final String advertiseURI,
+ final Configuration configuration) {
final boolean isAppend = Booleans.parseBoolean(append, true);
final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
@@ -181,45 +303,27 @@ public final class RollingRandomAccessFileAppender extends AbstractOutputStreamA
final boolean isAdvertise = Boolean.parseBoolean(advertise);
final int bufferSize = Integers.parseInt(bufferSizeStr, RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE);
- 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 RollingRandomAccessFileManager manager = RollingRandomAccessFileManager.getRollingRandomAccessFileManager(
- fileName, filePattern, isAppend, isFlush, bufferSize, policy, strategy, advertiseURI, layout, config);
- if (manager == null) {
- return null;
- }
-
- manager.initialize();
-
- return new RollingRandomAccessFileAppender(name, layout, filter, manager,
- fileName, filePattern, ignoreExceptions, isFlush, bufferSize,
- isAdvertise ? config.getAdvertiser() : null);
+ return newBuilder()
+ .withAdvertise(isAdvertise)
+ .withAdvertiseURI(advertiseURI)
+ .withAppend(isAppend)
+ .withBufferSize(bufferSize)
+ .withConfiguration(configuration)
+ .withFileName(fileName)
+ .withFilePattern(filePattern)
+ .withFilter(filter)
+ .withIgnoreExceptions(ignoreExceptions)
+ .withImmediateFlush(isFlush)
+ .withLayout(layout)
+ .withName(name)
+ .withPolicy(policy)
+ .withStrategy(strategy)
+ .build();
+ }
+
+ @PluginBuilderFactory
+ public static <B extends Builder<B>> B newBuilder() {
+ return new Builder<B>().asBuilder();
}
+
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4f781626/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 356785b..0fc7d75 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -135,6 +135,9 @@
<action issue="LOG4J2-1703" dev="ggregory" type="add">
Add a Builder to MemoryMappedFileAppender and deprecate MemoryMappedFileAppender.createAppender().
</action>
+ <action issue="LOG4J2-1704" dev="ggregory" type="add">
+ Add a Builder to RollingRandomAccessFileAppender and deprecate RollingRandomAccessFileAppender.createAppender().
+ </action>
</release>
<release version="2.7" date="2016-10-02" description="GA Release 2.7">
<action issue="LOG4J2-1618" dev="rpopma" type="fix" due-to="Raman Gupta">