You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2013/05/15 09:32:10 UTC
svn commit: r1482707 - in /logging/log4j/log4j2/trunk: ./
core/src/main/java/org/apache/logging/log4j/core/appender/
core/src/main/java/org/apache/logging/log4j/core/appender/rolling/
core/src/main/java/org/apache/logging/log4j/core/net/ core/src/test/...
Author: rgoers
Date: Wed May 15 07:32:09 2013
New Revision: 1482707
URL: http://svn.apache.org/r1482707
Log:
LOG4J2-254 - Mark OutputStream in OutputStreamManager as volatile. Mark header and footer as final.
Modified:
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java
logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
logging/log4j/log4j2/trunk/pom.xml
logging/log4j/log4j2/trunk/src/changes/changes.xml
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java Wed May 15 07:32:09 2013
@@ -59,10 +59,6 @@ public abstract class AbstractOutputStre
final boolean handleException, final boolean immediateFlush,
final OutputStreamManager manager) {
super(name, filter, layout, handleException);
- if (layout != null) {
- manager.setHeader(layout.getHeader());
- manager.setFooter(layout.getFooter());
- }
this.manager = manager;
this.immediateFlush = immediateFlush;
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java Wed May 15 07:32:09 2013
@@ -95,13 +95,13 @@ public final class ConsoleAppender<T ext
final boolean isFollow = follow == null ? false : Boolean.valueOf(follow);
final boolean handleExceptions = suppress == null ? true : Boolean.valueOf(suppress);
final Target target = t == null ? Target.SYSTEM_OUT : Target.valueOf(t);
- return new ConsoleAppender<S>(name, layout, filter, getManager(isFollow, target), handleExceptions);
+ return new ConsoleAppender<S>(name, layout, filter, getManager(isFollow, target, layout), handleExceptions);
}
- private static OutputStreamManager getManager(final boolean follow, final Target target) {
+ private static OutputStreamManager getManager(final boolean follow, final Target target, final Layout layout) {
final String type = target.name();
final OutputStream os = getOutputStream(follow, target);
- return OutputStreamManager.getManager(target.name() + "." + follow, new FactoryData(os, type), factory);
+ return OutputStreamManager.getManager(target.name() + "." + follow, new FactoryData(os, type, layout), factory);
}
private static OutputStream getOutputStream(final boolean follow, final Target target) {
@@ -212,15 +212,17 @@ public final class ConsoleAppender<T ext
private static class FactoryData {
private final OutputStream os;
private final String type;
+ private final Layout layout;
/**
* Constructor.
* @param os The OutputStream.
* @param type The name of the target.
*/
- public FactoryData(final OutputStream os, final String type) {
+ public FactoryData(final OutputStream os, final String type, final Layout layout) {
this.os = os;
this.type = type;
+ this.layout = layout;
}
}
@@ -237,7 +239,7 @@ public final class ConsoleAppender<T ext
*/
@Override
public OutputStreamManager createManager(final String name, final FactoryData data) {
- return new OutputStreamManager(data.os, data.type);
+ return new OutputStreamManager(data.os, data.type, data.layout);
}
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java Wed May 15 07:32:09 2013
@@ -147,17 +147,16 @@ public final class FastFileAppender<T ex
+ name);
return null;
}
-
- FastFileManager manager = FastFileManager.getFileManager(fileName,
- isAppend, isFlush, advertiseURI);
- if (manager == null) {
- return null;
- }
if (layout == null) {
@SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null, null);
layout = l;
}
+ FastFileManager manager = FastFileManager.getFileManager(fileName, isAppend, isFlush, advertiseURI, layout);
+ if (manager == null) {
+ return null;
+ }
+
return new FastFileAppender<S>(name, layout, filter, manager, fileName,
handleExceptions, isFlush, isAdvertise ? config.getAdvertiser()
: null);
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java Wed May 15 07:32:09 2013
@@ -16,6 +16,8 @@
*/
package org.apache.logging.log4j.core.appender;
+import org.apache.logging.log4j.core.Layout;
+
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
@@ -40,9 +42,10 @@ public class FastFileManager extends Out
private final ByteBuffer buffer;
private ThreadLocal<Boolean> isEndOfBatch = new ThreadLocal<Boolean>();
- protected FastFileManager(RandomAccessFile file, String fileName,
- OutputStream os, boolean immediateFlush, String advertiseURI) {
- super(os, fileName);
+ protected FastFileManager(final RandomAccessFile file, final String fileName,
+ final OutputStream os, final boolean immediateFlush, final String advertiseURI,
+ final Layout layout) {
+ super(os, fileName, layout);
this.isImmediateFlush = immediateFlush;
this.randomAccessFile = file;
this.advertiseURI = advertiseURI;
@@ -54,19 +57,18 @@ public class FastFileManager extends Out
/**
* Returns the FastFileManager.
- *
+ *
* @param fileName The name of the file to manage.
- * @param append true if the file should be appended to, false if it should
- * be overwritten.
- * @param isFlush true if the contents should be flushed to disk on every
- * write
+ * @param append true if the file should be appended to, false if it should be overwritten.
+ * @param isFlush true if the contents should be flushed to disk on every write
* @param advertiseURI the URI to use when advertising the file
+ * @param layout The layout.
* @return A FastFileManager for the File.
*/
- public static FastFileManager getFileManager(String fileName,
- boolean append, boolean isFlush, String advertiseURI) {
- return (FastFileManager) getManager(fileName, new FactoryData(append,
- isFlush, advertiseURI), FACTORY);
+ public static FastFileManager getFileManager(final String fileName, final boolean append,
+ final boolean isFlush, final String advertiseURI,
+ final Layout layout) {
+ return (FastFileManager) getManager(fileName, new FactoryData(append, isFlush, advertiseURI, layout), FACTORY);
}
public Boolean isEndOfBatch() {
@@ -115,7 +117,7 @@ public class FastFileManager extends Out
/**
* Returns the name of the File being managed.
- *
+ *
* @return The name of the File being managed.
*/
public String getFileName() {
@@ -137,7 +139,7 @@ public class FastFileManager extends Out
* FileManager's content format is specified by:
* <p/>
* Key: "fileURI" Value: provided "advertiseURI" param.
- *
+ *
* @return Map of content format keys supporting FileManager
*/
@Override
@@ -155,29 +157,30 @@ public class FastFileManager extends Out
private final boolean append;
private final boolean immediateFlush;
private final String advertiseURI;
+ private final Layout layout;
/**
* Constructor.
- *
+ *
* @param append Append status.
*/
- public FactoryData(boolean append, boolean immediateFlush,
- String advertiseURI) {
+ public FactoryData(final boolean append, final boolean immediateFlush, final String advertiseURI,
+ final Layout layout) {
this.append = append;
this.immediateFlush = immediateFlush;
this.advertiseURI = advertiseURI;
+ this.layout = layout;
}
}
/**
* Factory to create a FastFileManager.
*/
- private static class FastFileManagerFactory implements
- ManagerFactory<FastFileManager, FactoryData> {
+ private static class FastFileManagerFactory implements ManagerFactory<FastFileManager, FactoryData> {
/**
* Create a FastFileManager.
- *
+ *
* @param name The name of the File.
* @param data The FactoryData
* @return The FastFileManager for the File.
@@ -197,8 +200,7 @@ public class FastFileManager extends Out
RandomAccessFile raf;
try {
raf = new RandomAccessFile(name, "rw");
- return new FastFileManager(raf, name, os, data.immediateFlush,
- data.advertiseURI);
+ return new FastFileManager(raf, name, os, data.immediateFlush, data.advertiseURI, data.layout);
} catch (Exception ex) {
LOGGER.error("FastFileManager (" + name + ") " + ex);
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java Wed May 15 07:32:09 2013
@@ -190,19 +190,19 @@ public final class FastRollingFileAppend
"true", config);
}
- final FastRollingFileManager manager = FastRollingFileManager
- .getFastRollingFileManager(fileName, filePattern, isAppend,
- isFlush, policy, strategy, advertiseURI);
- if (manager == null) {
- return null;
- }
-
if (layout == null) {
@SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null, null);
layout = l;
}
+
+ final FastRollingFileManager manager = FastRollingFileManager.getFastRollingFileManager(fileName, filePattern,
+ isAppend, isFlush, policy, strategy, advertiseURI, layout);
+ if (manager == null) {
+ return null;
+ }
+
return new FastRollingFileAppender<S>(name, layout, filter, manager,
fileName, filePattern, handleExceptions, isFlush,
isAdvertise ? config.getAdvertiser() : null);
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java Wed May 15 07:32:09 2013
@@ -129,17 +129,19 @@ public final class FileAppender<T extend
LOGGER.error("No filename provided for FileAppender with name " + name);
return null;
}
-
- final FileManager manager = FileManager.getFileManager(fileName, isAppend, isLocking, isBuffered, advertiseURI);
- if (manager == null) {
- return null;
- }
if (layout == null) {
@SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null, null);
layout = l;
}
+ final FileManager manager = FileManager.getFileManager(fileName, isAppend, isLocking, isBuffered, advertiseURI,
+ layout);
+ if (manager == null) {
+ return null;
+ }
+
+
return new FileAppender<S>(name, layout, filter, manager, fileName, handleExceptions, isFlush,
isAdvertise ? config.getAdvertiser() : null);
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java Wed May 15 07:32:09 2013
@@ -16,6 +16,8 @@
*/
package org.apache.logging.log4j.core.appender;
+import org.apache.logging.log4j.core.Layout;
+
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
@@ -39,8 +41,9 @@ public class FileManager extends OutputS
private final boolean isLocking;
private final String advertiseURI;
- protected FileManager(final String fileName, final OutputStream os, final boolean append, final boolean locking, String advertiseURI) {
- super(os, fileName);
+ protected FileManager(final String fileName, final OutputStream os, final boolean append, final boolean locking,
+ final String advertiseURI, final Layout layout) {
+ super(os, fileName, layout);
this.isAppend = append;
this.isLocking = locking;
this.advertiseURI = advertiseURI;
@@ -56,12 +59,14 @@ public class FileManager extends OutputS
* @return A FileManager for the File.
*/
public static FileManager getFileManager(final String fileName, final boolean append, boolean locking,
- final boolean bufferedIO, String advertiseURI) {
+ final boolean bufferedIO, final String advertiseURI,
+ final Layout layout) {
if (locking && bufferedIO) {
locking = false;
}
- return (FileManager) getManager(fileName, new FactoryData(append, locking, bufferedIO, advertiseURI), FACTORY);
+ return (FileManager) getManager(fileName, new FactoryData(append, locking, bufferedIO, advertiseURI, layout),
+ FACTORY);
}
@Override
@@ -137,6 +142,7 @@ public class FileManager extends OutputS
private final boolean locking;
private final boolean bufferedIO;
private final String advertiseURI;
+ private final Layout layout;
/**
* Constructor.
@@ -145,11 +151,13 @@ public class FileManager extends OutputS
* @param bufferedIO Buffering flag.
* @param advertiseURI the URI to use when advertising the file
*/
- public FactoryData(final boolean append, final boolean locking, final boolean bufferedIO, String advertiseURI) {
+ public FactoryData(final boolean append, final boolean locking, final boolean bufferedIO,
+ final String advertiseURI, final Layout layout) {
this.append = append;
this.locking = locking;
this.bufferedIO = bufferedIO;
this.advertiseURI = advertiseURI;
+ this.layout = layout;
}
}
@@ -178,7 +186,7 @@ public class FileManager extends OutputS
if (data.bufferedIO) {
os = new BufferedOutputStream(os);
}
- return new FileManager(name, os, data.append, data.locking, data.advertiseURI);
+ return new FileManager(name, os, data.append, data.locking, data.advertiseURI, data.layout);
} catch (final FileNotFoundException ex) {
LOGGER.error("FileManager (" + name + ") " + ex);
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java Wed May 15 07:32:09 2013
@@ -16,6 +16,8 @@
*/
package org.apache.logging.log4j.core.appender;
+import org.apache.logging.log4j.core.Layout;
+
import java.io.IOException;
import java.io.OutputStream;
@@ -25,14 +27,28 @@ import java.io.OutputStream;
*/
public class OutputStreamManager extends AbstractManager {
- private OutputStream os;
+ private volatile OutputStream os;
- private byte[] footer = null;
- private byte[] header = null;
+ private final byte[] footer;
+ private final byte[] header;
- protected OutputStreamManager(final OutputStream os, final String streamName) {
+ protected OutputStreamManager(final OutputStream os, final String streamName, final Layout layout) {
super(streamName);
this.os = os;
+ if (layout != null) {
+ this.footer = layout.getFooter();
+ this.header = layout.getHeader();
+ if (this.header != null) {
+ try {
+ this.os.write(header, 0, header.length);
+ } catch (final IOException ioe) {
+ LOGGER.error("Unable to write header", ioe);
+ }
+ }
+ } else {
+ this.footer = null;
+ this.header = null;
+ }
}
/**
@@ -50,31 +66,6 @@ public class OutputStreamManager extends
}
/**
- * Set the header to write when the stream is opened.
- * @param header The header.
- */
- public synchronized void setHeader(final byte[] header) {
- if (header != null) {
- this.header = header;
- try {
- this.os.write(header, 0, header.length);
- } catch (final IOException ioe) {
- LOGGER.error("Unable to write header", ioe);
- }
- }
- }
-
- /**
- * Set the footer to write when the stream is closed.
- * @param footer The footer.
- */
- public synchronized void setFooter(final byte[] footer) {
- if (footer != null) {
- this.footer = footer;
- }
- }
-
- /**
* Default hook to write footer during close.
*/
@Override
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java Wed May 15 07:32:09 2013
@@ -166,18 +166,18 @@ public final class RollingFileAppender<T
strategy = DefaultRolloverStrategy.createStrategy(null, null, "true", config);
}
- final RollingFileManager manager = RollingFileManager.getFileManager(fileName, filePattern, isAppend,
- isBuffered, policy, strategy, advertiseURI);
- if (manager == null) {
- return null;
- }
-
if (layout == null) {
@SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null, null);
layout = l;
}
+ final RollingFileManager manager = RollingFileManager.getFileManager(fileName, filePattern, isAppend,
+ isBuffered, policy, strategy, advertiseURI, layout);
+ if (manager == null) {
+ return null;
+ }
+
return new RollingFileAppender<S>(name, layout, filter, manager, fileName, filePattern,
handleExceptions, isFlush, isAdvertise ? config.getAdvertiser() : null);
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java Wed May 15 07:32:09 2013
@@ -117,7 +117,7 @@ public class SocketAppender<T extends Se
final String prot = protocol != null ? protocol : Protocol.TCP.name();
- final AbstractSocketManager manager = createSocketManager(prot, host, port, reconnectDelay, fail);
+ final AbstractSocketManager manager = createSocketManager(prot, host, port, reconnectDelay, fail, layout);
if (manager == null) {
return null;
}
@@ -127,13 +127,14 @@ public class SocketAppender<T extends Se
}
protected static AbstractSocketManager createSocketManager(final String protocol, final String host, final int port,
- final int delay, final boolean immediateFail) {
+ final int delay, final boolean immediateFail,
+ final Layout layout) {
final Protocol p = EnglishEnums.valueOf(Protocol.class, protocol);
switch (p) {
case TCP:
- return TCPSocketManager.getSocketManager(host, port, delay, immediateFail);
+ return TCPSocketManager.getSocketManager(host, port, delay, immediateFail, layout);
case UDP:
- return DatagramSocketManager.getSocketManager(host, port);
+ return DatagramSocketManager.getSocketManager(host, port, layout);
default:
return null;
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java Wed May 15 07:32:09 2013
@@ -130,7 +130,7 @@ public class SyslogAppender<T extends Se
return null;
}
final String prot = protocol != null ? protocol : Protocol.UDP.name();
- final AbstractSocketManager manager = createSocketManager(prot, host, port, reconnectDelay, fail);
+ final AbstractSocketManager manager = createSocketManager(prot, host, port, reconnectDelay, fail, layout);
if (manager == null) {
return null;
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java Wed May 15 07:32:09 2013
@@ -23,6 +23,7 @@ import java.io.OutputStream;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
+import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.appender.AppenderRuntimeException;
import org.apache.logging.log4j.core.appender.ManagerFactory;
@@ -41,13 +42,12 @@ public class FastRollingFileManager exte
private final ByteBuffer buffer;
private ThreadLocal<Boolean> isEndOfBatch = new ThreadLocal<Boolean>();
- public FastRollingFileManager(RandomAccessFile raf, String fileName,
- String pattern, OutputStream os, boolean append,
- boolean immediateFlush, long size, long time,
- TriggeringPolicy policy, RolloverStrategy strategy,
- String advertiseURI) {
- super(fileName, pattern, os, append, size, time, policy, strategy,
- advertiseURI);
+ public FastRollingFileManager(final RandomAccessFile raf, final String fileName,
+ final String pattern, final OutputStream os, final boolean append,
+ final boolean immediateFlush, final long size, final long time,
+ final TriggeringPolicy policy, final RolloverStrategy strategy,
+ final String advertiseURI, final Layout layout) {
+ super(fileName, pattern, os, append, size, time, policy, strategy, advertiseURI, layout);
this.isImmediateFlush = immediateFlush;
this.randomAccessFile = raf;
isEndOfBatch.set(Boolean.FALSE);
@@ -56,13 +56,11 @@ public class FastRollingFileManager exte
buffer = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
}
- public static FastRollingFileManager getFastRollingFileManager(
- String fileName, String filePattern, boolean isAppend,
- boolean immediateFlush, TriggeringPolicy policy,
- RolloverStrategy strategy, String advertiseURI) {
- return (FastRollingFileManager) getManager(fileName, new FactoryData(
- filePattern, isAppend, immediateFlush, policy, strategy,
- advertiseURI), FACTORY);
+ public static FastRollingFileManager getFastRollingFileManager(final String fileName, final String filePattern,
+ final boolean isAppend, final boolean immediateFlush, final TriggeringPolicy policy,
+ final RolloverStrategy strategy, final String advertiseURI, final Layout layout) {
+ return (FastRollingFileManager) getManager(fileName, new FactoryData(filePattern, isAppend, immediateFlush,
+ policy, strategy, advertiseURI, layout), FACTORY);
}
public Boolean isEndOfBatch() {
@@ -120,19 +118,17 @@ public class FastRollingFileManager exte
/**
* Factory to create a FastRollingFileManager.
*/
- private static class FastRollingFileManagerFactory implements
- ManagerFactory<FastRollingFileManager, FactoryData> {
+ private static class FastRollingFileManagerFactory implements ManagerFactory<FastRollingFileManager, FactoryData> {
/**
* Create the FastRollingFileManager.
- *
+ *
* @param name The name of the entity to manage.
* @param data The data required to create the entity.
* @return a RollingFileManager.
*/
@Override
- public FastRollingFileManager createManager(String name,
- FactoryData data) {
+ public FastRollingFileManager createManager(String name, FactoryData data) {
File file = new File(name);
final File parent = file.getParentFile();
if (null != parent && !parent.exists()) {
@@ -147,10 +143,8 @@ public class FastRollingFileManager exte
RandomAccessFile raf;
try {
raf = new RandomAccessFile(name, "rw");
- return new FastRollingFileManager(raf, name, data.pattern,
- new DummyOutputStream(), data.append,
- data.immediateFlush, size, time, data.policy,
- data.strategy, data.advertiseURI);
+ return new FastRollingFileManager(raf, name, data.pattern, new DummyOutputStream(), data.append,
+ data.immediateFlush, size, time, data.policy, data.strategy, data.advertiseURI, data.layout);
} catch (FileNotFoundException ex) {
LOGGER.error("FastRollingFileManager (" + name + ") " + ex);
}
@@ -179,23 +173,25 @@ public class FastRollingFileManager exte
private final TriggeringPolicy policy;
private final RolloverStrategy strategy;
private final String advertiseURI;
+ private final Layout layout;
/**
* Create the data for the factory.
- *
+ *
* @param pattern The pattern.
* @param append The append flag.
* @param immediateFlush
*/
- public FactoryData(String pattern, boolean append,
- boolean immediateFlush, TriggeringPolicy policy,
- RolloverStrategy strategy, String advertiseURI) {
+ public FactoryData(final String pattern, final boolean append, final boolean immediateFlush,
+ final TriggeringPolicy policy, final RolloverStrategy strategy, final String advertiseURI,
+ final Layout layout) {
this.pattern = pattern;
this.append = append;
this.immediateFlush = immediateFlush;
this.policy = policy;
this.strategy = strategy;
this.advertiseURI = advertiseURI;
+ this.layout = layout;
}
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java Wed May 15 07:32:09 2013
@@ -16,6 +16,7 @@
*/
package org.apache.logging.log4j.core.appender.rolling;
+import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.appender.FileManager;
import org.apache.logging.log4j.core.appender.ManagerFactory;
@@ -46,8 +47,8 @@ public class RollingFileManager extends
protected RollingFileManager(final String fileName, final String pattern, final OutputStream os,
final boolean append, final long size, final long time, final TriggeringPolicy policy,
- final RolloverStrategy strategy, String advertiseURI) {
- super(fileName, os, append, false, advertiseURI);
+ final RolloverStrategy strategy, final String advertiseURI, final Layout layout) {
+ super(fileName, os, append, false, advertiseURI, layout);
this.size = size;
this.initialTime = time;
this.policy = policy;
@@ -65,14 +66,16 @@ public class RollingFileManager extends
* @param policy The TriggeringPolicy.
* @param strategy The RolloverStrategy.
* @param advertiseURI the URI to use when advertising the file
+ * @param layout The Layout.
* @return A RollingFileManager.
*/
public static RollingFileManager getFileManager(final String fileName, final String pattern, final boolean append,
final boolean bufferedIO, final TriggeringPolicy policy,
- final RolloverStrategy strategy, String advertiseURI) {
+ final RolloverStrategy strategy, final String advertiseURI,
+ final Layout layout) {
return (RollingFileManager) getManager(fileName, new FactoryData(pattern, append,
- bufferedIO, policy, strategy, advertiseURI), factory);
+ bufferedIO, policy, strategy, advertiseURI, layout), factory);
}
@Override
@@ -234,6 +237,7 @@ public class RollingFileManager extends
private final TriggeringPolicy policy;
private final RolloverStrategy strategy;
private final String advertiseURI;
+ private final Layout layout;
/**
* Create the data for the factory.
@@ -241,15 +245,18 @@ public class RollingFileManager extends
* @param append The append flag.
* @param bufferedIO The bufferedIO flag.
* @param advertiseURI
+ * @param layout The Layout.
*/
public FactoryData(final String pattern, final boolean append, final boolean bufferedIO,
- final TriggeringPolicy policy, final RolloverStrategy strategy, String advertiseURI) {
+ final TriggeringPolicy policy, final RolloverStrategy strategy, final String advertiseURI,
+ final Layout layout) {
this.pattern = pattern;
this.append = append;
this.bufferedIO = bufferedIO;
this.policy = policy;
this.strategy = strategy;
this.advertiseURI = advertiseURI;
+ this.layout = layout;
}
}
@@ -287,7 +294,7 @@ public class RollingFileManager extends
os = new BufferedOutputStream(os);
}
return new RollingFileManager(name, data.pattern, os, data.append, size, time, data.policy,
- data.strategy, data.advertiseURI);
+ data.strategy, data.advertiseURI, data.layout);
} catch (final FileNotFoundException ex) {
LOGGER.error("FileManager (" + name + ") " + ex);
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java Wed May 15 07:32:09 2013
@@ -18,6 +18,8 @@ package org.apache.logging.log4j.core.ne
import java.util.HashMap;
import java.util.Map;
+
+import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.appender.OutputStreamManager;
import java.io.OutputStream;
@@ -50,8 +52,8 @@ public abstract class AbstractSocketMana
* @param port The target port number.
*/
public AbstractSocketManager(final String name, final OutputStream os, final InetAddress addr, final String host,
- final int port) {
- super(os, name);
+ final int port, final Layout layout) {
+ super(os, name, layout);
this.address = addr;
this.host = host;
this.port = port;
@@ -69,7 +71,7 @@ public abstract class AbstractSocketMana
Map<String, String> result = new HashMap<String, String>(super.getContentFormat());
result.put("port", Integer.toString(port));
result.put("address", address.getHostAddress());
-
+
return result;
}
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java Wed May 15 07:32:09 2013
@@ -20,6 +20,8 @@ import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
+
+import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.appender.ManagerFactory;
import java.io.OutputStream;
@@ -38,26 +40,29 @@ public class DatagramSocketManager exten
* @param address
* @param host The host to connect to.
* @param port The port on the host.
+ * @param layout The layout
*/
- protected DatagramSocketManager(final String name, final OutputStream os, InetAddress address, final String host, final int port) {
- super(name, os, address, host, port);
+ protected DatagramSocketManager(final String name, final OutputStream os, InetAddress address, final String host,
+ final int port, final Layout layout) {
+ super(name, os, address, host, port, layout);
}
/**
* Obtain a SocketManager.
* @param host The host to connect to.
* @param port The port on the host.
+ * @param layout The layout.
* @return A DatagramSocketManager.
*/
- public static DatagramSocketManager getSocketManager(final String host, final int port) {
+ public static DatagramSocketManager getSocketManager(final String host, final int port, final Layout layout) {
if (host == null || host.length() == 0) {
throw new IllegalArgumentException("A host name is required");
}
if (port <= 0) {
throw new IllegalArgumentException("A port value is required");
}
- return (DatagramSocketManager) getManager("UDP:" + host + ":" + port, new FactoryData(host, port), FACTORY
- );
+ return (DatagramSocketManager) getManager("UDP:" + host + ":" + port, new FactoryData(host, port, layout),
+ FACTORY);
}
/**
@@ -82,10 +87,12 @@ public class DatagramSocketManager exten
private static class FactoryData {
private final String host;
private final int port;
+ private final Layout layout;
- public FactoryData(final String host, final int port) {
+ public FactoryData(final String host, final int port, final Layout layout) {
this.host = host;
this.port = port;
+ this.layout = layout;
}
}
@@ -104,7 +111,7 @@ public class DatagramSocketManager exten
LOGGER.error("Could not find address of " + data.host, ex);
return null;
}
- return new DatagramSocketManager(name, os, address, data.host, data.port);
+ return new DatagramSocketManager(name, os, address, data.host, data.port, data.layout);
}
}
}
Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java Wed May 15 07:32:09 2013
@@ -18,6 +18,8 @@ package org.apache.logging.log4j.core.ne
import java.util.HashMap;
import java.util.Map;
+
+import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.appender.AppenderRuntimeException;
import org.apache.logging.log4j.core.appender.ManagerFactory;
import org.apache.logging.log4j.core.appender.OutputStreamManager;
@@ -65,10 +67,13 @@ public class TCPSocketManager extends Ab
* @param host The name of the host.
* @param port The port number on the host.
* @param delay Reconnection interval.
+ * @param immediateFail
+ * @param layout The Layout.
*/
public TCPSocketManager(final String name, final OutputStream os, final Socket sock, final InetAddress addr,
- final String host, final int port, final int delay, final boolean immediateFail) {
- super(name, os, addr, host, port);
+ final String host, final int port, final int delay, final boolean immediateFail,
+ final Layout layout) {
+ super(name, os, addr, host, port, layout);
this.reconnectionDelay = delay;
this.socket = sock;
this.immediateFail = immediateFail;
@@ -88,7 +93,8 @@ public class TCPSocketManager extends Ab
* @param delay The interval to pause between retries.
* @return A TCPSocketManager.
*/
- public static TCPSocketManager getSocketManager(final String host, int port, int delay, boolean immediateFail) {
+ public static TCPSocketManager getSocketManager(final String host, int port, int delay,
+ final boolean immediateFail, final Layout layout ) {
if (host == null || host.length() == 0) {
throw new IllegalArgumentException("A host name is required");
}
@@ -99,7 +105,7 @@ public class TCPSocketManager extends Ab
delay = DEFAULT_RECONNECTION_DELAY;
}
return (TCPSocketManager) getManager("TCP:" + host + ":" + port,
- new FactoryData(host, port, delay, immediateFail), FACTORY);
+ new FactoryData(host, port, delay, immediateFail, layout), FACTORY);
}
@Override
@@ -222,12 +228,15 @@ public class TCPSocketManager extends Ab
private final int port;
private final int delay;
private final boolean immediateFail;
+ private final Layout layout;
- public FactoryData(final String host, final int port, final int delay, final boolean immediateFail) {
+ public FactoryData(final String host, final int port, final int delay, final boolean immediateFail,
+ final Layout layout) {
this.host = host;
this.port = port;
this.delay = delay;
this.immediateFail = immediateFail;
+ this.layout = layout;
}
}
@@ -251,7 +260,7 @@ public class TCPSocketManager extends Ab
final Socket socket = new Socket(data.host, data.port);
os = socket.getOutputStream();
return new TCPSocketManager(name, os, socket, address, data.host, data.port, data.delay,
- data.immediateFail);
+ data.immediateFail, data.layout);
} catch (final IOException ex) {
LOGGER.error("TCPSocketManager (" + name + ") " + ex);
os = new ByteArrayOutputStream();
@@ -259,7 +268,8 @@ public class TCPSocketManager extends Ab
if (data.delay == 0) {
return null;
}
- return new TCPSocketManager(name, os, null, address, data.host, data.port, data.delay, data.immediateFail);
+ return new TCPSocketManager(name, os, null, address, data.host, data.port, data.delay, data.immediateFail,
+ data.layout);
}
}
}
Modified: logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java (original)
+++ logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java Wed May 15 07:32:09 2013
@@ -52,7 +52,7 @@ public class OnStartupTriggeringPolicyTe
public MyRollingManager(final TriggeringPolicy policy, final RolloverStrategy strategy) {
super("testfile", "target/rolling1/test1-%i.log.gz", new ByteArrayOutputStream(),
- false, 0, System.currentTimeMillis(), policy, strategy, null);
+ false, 0, System.currentTimeMillis(), policy, strategy, null, null);
}
public void setFileTime(final long timestamp) {
Modified: logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java Wed May 15 07:32:09 2013
@@ -31,7 +31,7 @@ public class InMemoryAppender<T extends
public InMemoryAppender(final String name, final Layout<T> layout, final CompositeFilter filters,
final boolean handleException) {
- super(name, layout, filters, handleException, true, new InMemoryManager(name));
+ super(name, layout, filters, handleException, true, new InMemoryManager(name, layout));
}
@Override
@@ -41,8 +41,8 @@ public class InMemoryAppender<T extends
private static class InMemoryManager extends OutputStreamManager {
- public InMemoryManager(final String name) {
- super(new ByteArrayOutputStream(), name);
+ public InMemoryManager(final String name, final Layout layout) {
+ super(new ByteArrayOutputStream(), name, layout);
}
@Override
Modified: logging/log4j/log4j2/trunk/pom.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/pom.xml?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/pom.xml (original)
+++ logging/log4j/log4j2/trunk/pom.xml Wed May 15 07:32:09 2013
@@ -306,6 +306,11 @@
<version>2.2.9</version>
</dependency>
<dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>1.3.171</version>
+ </dependency>
+ <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.0.Beta2</version>
Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Wed May 15 07:32:09 2013
@@ -22,6 +22,9 @@
</properties>
<body>
<release version="2.0-beta7" date="2013-??-??" description="Bug fixes and enhancements">
+ <action issue="LOG4J2-254" dev="rgoers" type="fix">
+ Mark OutputStream in OutputStreamManager as volatile. Mark header and footer as final.
+ </action>
<action issue="LOG4J-244" dev="rgoers" type="fix">
Rewrite Appender was ignoring filters on referenced appenders.
</action>