Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;

import org.apache.logging.log4j.Logger;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
*
* @param <T> The {@link Layout}'s {@link Serializable} type.
*/
public interface Appender<T extends Serializable> extends LifeCycle {
public interface Appender extends LifeCycle {

/**
* Log in <code>Appender</code> specific way. When appropriate,
Expand All @@ -47,7 +47,7 @@ public interface Appender<T extends Serializable> extends LifeCycle {
*
* @return the Layout for the Appender or null if none is configured.
*/
Layout<T> getLayout();
Layout<? extends Serializable> getLayout();

/**
* Some appenders need to propagate exceptions back to the application. When {@code ignoreExceptions} is
Expand Down
6 changes: 3 additions & 3 deletions core/src/main/java/org/apache/logging/log4j/core/Logger.java
Original file line number Diff line number Diff line change
Expand Up @@ -139,23 +139,23 @@ public boolean isEnabled(final Level level, final Marker marker, final Message m
* This method is not exposed through the public API and is used primarily for unit testing.
* @param appender The Appender to add to the Logger.
*/
public void addAppender(final Appender<?> appender) {
public void addAppender(final Appender appender) {
config.config.addLoggerAppender(this, appender);
}

/**
* This method is not exposed through the public API and is used primarily for unit testing.
* @param appender The Appender to remove from the Logger.
*/
public void removeAppender(final Appender<?> appender) {
public void removeAppender(final Appender appender) {
config.loggerConfig.removeAppender(appender.getName());
}

/**
* This method is not exposed through the public API and is used primarily for unit testing.
* @return A Map containing the Appender's name as the key and the Appender as the value.
*/
public Map<String, Appender<?>> getAppenders() {
public Map<String, Appender> getAppenders() {
return config.loggerConfig.getAppenders();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@
*
* @param <T> The {@link Layout}'s {@link Serializable} type.
*/
public abstract class AbstractAppender<T extends Serializable> extends AbstractFilterable
implements Appender<T> {
public abstract class AbstractAppender extends AbstractFilterable
implements Appender {
/**
* Allow subclasses access to the status logger without creating another instance.
*/
Expand All @@ -45,7 +45,7 @@ public abstract class AbstractAppender<T extends Serializable> extends AbstractF

private ErrorHandler handler = new DefaultErrorHandler(this);

private final Layout<T> layout;
private final Layout<? extends Serializable> layout;

private final String name;

Expand All @@ -69,7 +69,7 @@ public static int parseInt(String s, int defaultValue) {
* @param filter The Filter to associate with the Appender.
* @param layout The layout to use to format the event.
*/
protected AbstractAppender(final String name, final Filter filter, final Layout<T> layout) {
protected AbstractAppender(final String name, final Filter filter, final Layout<? extends Serializable> layout) {
this(name, filter, layout, true);
}

Expand All @@ -81,7 +81,7 @@ protected AbstractAppender(final String name, final Filter filter, final Layout<
* @param ignoreExceptions If true, exceptions will be logged and suppressed. If false errors will be
* logged and then passed to the application.
*/
protected AbstractAppender(final String name, final Filter filter, final Layout<T> layout,
protected AbstractAppender(final String name, final Filter filter, final Layout<? extends Serializable> layout,
final boolean ignoreExceptions) {
super(filter);
this.name = name;
Expand Down Expand Up @@ -130,7 +130,7 @@ public ErrorHandler getHandler() {
* @return The Layout used to format the event.
*/
@Override
public Layout<T> getLayout() {
public Layout<? extends Serializable> getLayout() {
return layout;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
*
* @param <T> The {@link Layout}'s {@link Serializable} type.
*/
public abstract class AbstractOutputStreamAppender<T extends Serializable> extends AbstractAppender<T> {
public abstract class AbstractOutputStreamAppender extends AbstractAppender {

/**
* Immediate flush means that the underlying writer or output stream
Expand All @@ -57,7 +57,7 @@ public abstract class AbstractOutputStreamAppender<T extends Serializable> exten
* @param layout The layout to format the message.
* @param manager The OutputStreamManager.
*/
protected AbstractOutputStreamAppender(final String name, final Layout<T> layout, final Filter filter,
protected AbstractOutputStreamAppender(final String name, final Layout<? extends Serializable> layout, final Filter filter,
final boolean ignoreExceptions, final boolean immediateFlush,
final OutputStreamManager manager) {
super(name, filter, layout, ignoreExceptions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
* @param <T> The {@link org.apache.logging.log4j.core.Layout}'s {@link Serializable} type.
*/
@Plugin(name = "Async", category = "Core", elementType = "appender", printObject = true)
public final class AsyncAppender<T extends Serializable> extends AbstractAppender<T> {
public final class AsyncAppender extends AbstractAppender {

private static final int DEFAULT_QUEUE_SIZE = 128;
private static final String SHUTDOWN = "Shutdown";
Expand All @@ -59,7 +59,7 @@ public final class AsyncAppender<T extends Serializable> extends AbstractAppende
private final AppenderRef[] appenderRefs;
private final String errorRef;
private final boolean includeLocation;
private AppenderControl<?> errorAppender;
private AppenderControl errorAppender;
private AsyncThread thread;
private static final AtomicLong threadSequence = new AtomicLong(1);

Expand All @@ -78,10 +78,9 @@ private AsyncAppender(final String name, final Filter filter, final AppenderRef[
}

@Override
@SuppressWarnings("unchecked")
public void start() {
final Map<String, Appender<?>> map = config.getAppenders();
final List<AppenderControl<?>> appenders = new ArrayList<AppenderControl<?>>();
final Map<String, Appender> map = config.getAppenders();
final List<AppenderControl> appenders = new ArrayList<AppenderControl>();
for (final AppenderRef appenderRef : appenderRefs) {
if (map.containsKey(appenderRef.getRef())) {
appenders.add(new AppenderControl(map.get(appenderRef.getRef()), appenderRef.getLevel(),
Expand Down Expand Up @@ -167,7 +166,7 @@ public void append(final LogEvent event) {
* @return The AsyncAppender.
*/
@PluginFactory
public static <S extends Serializable> AsyncAppender<S> createAppender(
public static AsyncAppender createAppender(
@PluginElement("appender-ref") final AppenderRef[] appenderRefs,
@PluginAttr("error-ref") final String errorRef,
@PluginAttr("blocking") final String blocking,
Expand All @@ -190,7 +189,7 @@ public static <S extends Serializable> AsyncAppender<S> createAppender(
final boolean isIncludeLocation = Boolean.parseBoolean(includeLocation);
final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);

return new AsyncAppender<S>(name, filter, appenderRefs, errorRef,
return new AsyncAppender(name, filter, appenderRefs, errorRef,
queueSize, isBlocking, ignoreExceptions, config, isIncludeLocation);
}

Expand All @@ -200,10 +199,10 @@ public static <S extends Serializable> AsyncAppender<S> createAppender(
private class AsyncThread extends Thread {

private volatile boolean shutdown = false;
private final List<AppenderControl<?>> appenders;
private final List<AppenderControl> appenders;
private final BlockingQueue<Serializable> queue;

public AsyncThread(final List<AppenderControl<?>> appenders, final BlockingQueue<Serializable> queue) {
public AsyncThread(final List<AppenderControl> appenders, final BlockingQueue<Serializable> queue) {
this.appenders = appenders;
this.queue = queue;
setDaemon(true);
Expand All @@ -227,7 +226,7 @@ public void run() {
final Log4jLogEvent event = Log4jLogEvent.deserialize(s);
event.setEndOfBatch(queue.isEmpty());
boolean success = false;
for (final AppenderControl<?> control : appenders) {
for (final AppenderControl control : appenders) {
try {
control.callAppender(event);
success = true;
Expand All @@ -250,7 +249,7 @@ public void run() {
if (s instanceof Log4jLogEvent) {
final Log4jLogEvent event = Log4jLogEvent.deserialize(s);
event.setEndOfBatch(queue.isEmpty());
for (final AppenderControl<?> control : appenders) {
for (final AppenderControl control : appenders) {
control.callAppender(event);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
* @param <T> The {@link Layout}'s {@link Serializable} type.
*/
@Plugin(name = "Console", category = "Core", elementType = "appender", printObject = true)
public final class ConsoleAppender<T extends Serializable> extends AbstractOutputStreamAppender<T> {
public final class ConsoleAppender extends AbstractOutputStreamAppender {

private static ConsoleManagerFactory factory = new ConsoleManagerFactory();

Expand All @@ -62,7 +62,7 @@ public enum Target {
SYSTEM_ERR
}

private ConsoleAppender(final String name, final Layout<T> layout, final Filter filter,
private ConsoleAppender(final String name, final Layout<? extends Serializable> layout, final Filter filter,
final OutputStreamManager manager,
final boolean ignoreExceptions) {
super(name, layout, filter, ignoreExceptions, true, manager);
Expand All @@ -81,7 +81,7 @@ private ConsoleAppender(final String name, final Layout<T> layout, final Filter
* @return The ConsoleAppender.
*/
@PluginFactory
public static <S extends Serializable> ConsoleAppender<S> createAppender(@PluginElement("layout") Layout<S> layout,
public static ConsoleAppender createAppender(@PluginElement("layout") Layout<? extends Serializable> layout,
@PluginElement("filters") final Filter filter,
@PluginAttr("target") final String t,
@PluginAttr("name") final String name,
Expand All @@ -92,18 +92,15 @@ public static <S extends Serializable> ConsoleAppender<S> createAppender(@Plugin
return null;
}
if (layout == null) {
@SuppressWarnings({ "unchecked", "UnnecessaryLocalVariable" })
final
Layout<S> l = (Layout<S>) PatternLayout.createLayout(null, null, null, null, null);
layout = l;
layout = PatternLayout.createLayout(null, null, null, null, null);
}
final boolean isFollow = Boolean.parseBoolean(follow);
final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
final Target target = t == null ? Target.SYSTEM_OUT : Target.valueOf(t);
return new ConsoleAppender<S>(name, layout, filter, getManager(isFollow, target, layout), ignoreExceptions);
return new ConsoleAppender(name, layout, filter, getManager(isFollow, target, layout), ignoreExceptions);
}

private static OutputStreamManager getManager(final boolean follow, final Target target, final Layout layout) {
private static OutputStreamManager getManager(final boolean follow, final Target target, final Layout<? extends Serializable> layout) {
final String type = target.name();
final OutputStream os = getOutputStream(follow, target);
return OutputStreamManager.getManager(target.name() + "." + follow, new FactoryData(os, type, layout), factory);
Expand Down Expand Up @@ -217,14 +214,14 @@ public void write(final int b) throws IOException {
private static class FactoryData {
private final OutputStream os;
private final String type;
private final Layout layout;
private final Layout<? extends Serializable> layout;

/**
* Constructor.
* @param os The OutputStream.
* @param type The name of the target.
*/
public FactoryData(final OutputStream os, final String type, final Layout layout) {
public FactoryData(final OutputStream os, final String type, final Layout<? extends Serializable> layout) {
this.os = os;
this.type = type;
this.layout = layout;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
* @param <T> The {@link org.apache.logging.log4j.core.Layout}'s {@link Serializable} type.
*/
@Plugin(name = "Failover", category = "Core", elementType = "appender", printObject = true)
public final class FailoverAppender<T extends Serializable> extends AbstractAppender<T> {
public final class FailoverAppender extends AbstractAppender {

private static final int DEFAULT_INTERVAL_SECONDS = 60;

Expand All @@ -53,9 +53,9 @@ public final class FailoverAppender<T extends Serializable> extends AbstractAppe

private final Configuration config;

private AppenderControl<?> primary;
private AppenderControl primary;

private final List<AppenderControl<?>> failoverAppenders = new ArrayList<AppenderControl<?>>();
private final List<AppenderControl> failoverAppenders = new ArrayList<AppenderControl>();

private final long intervalMillis;

Expand All @@ -74,9 +74,8 @@ private FailoverAppender(final String name, final Filter filter, final String pr


@Override
@SuppressWarnings("unchecked")
public void start() {
final Map<String, Appender<?>> map = config.getAppenders();
final Map<String, Appender> map = config.getAppenders();
int errors = 0;
if (map.containsKey(primaryRef)) {
primary = new AppenderControl(map.get(primaryRef), null, null);
Expand Down Expand Up @@ -187,7 +186,7 @@ public String toString() {
* @return The FailoverAppender that was created.
*/
@PluginFactory
public static <S extends Serializable> FailoverAppender<S> createAppender(@PluginAttr("name") final String name,
public static FailoverAppender createAppender(@PluginAttr("name") final String name,
@PluginAttr("primary") final String primary,
@PluginElement("failovers") final String[] failovers,
@PluginAttr("retryInterval") final String retryIntervalString,
Expand Down Expand Up @@ -218,6 +217,6 @@ public static <S extends Serializable> FailoverAppender<S> createAppender(@Plugi

final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);

return new FailoverAppender<S>(name, filter, primary, failovers, retryIntervalMillis, config, ignoreExceptions);
return new FailoverAppender(name, filter, primary, failovers, retryIntervalMillis, config, ignoreExceptions);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@
* @param <T> The {@link Layout}'s {@link Serializable} type.
*/
@Plugin(name = "File", category = "Core", elementType = "appender", printObject = true)
public final class FileAppender<T extends Serializable> extends AbstractOutputStreamAppender<T> {
public final class FileAppender extends AbstractOutputStreamAppender {

private final String fileName;
private final Advertiser advertiser;
private Object advertisement;

private FileAppender(final String name, final Layout<T> layout, final Filter filter, final FileManager manager,
private FileAppender(final String name, final Layout<? extends Serializable> layout, final Filter filter, final FileManager manager,
final String filename, final boolean ignoreExceptions, final boolean immediateFlush,
final Advertiser advertiser) {
super(name, layout, filter, ignoreExceptions, immediateFlush, manager);
Expand Down Expand Up @@ -97,14 +97,14 @@ public String getFileName() {
* @return The FileAppender.
*/
@PluginFactory
public static <S extends Serializable> FileAppender<S> createAppender(@PluginAttr("fileName") final String fileName,
public static FileAppender createAppender(@PluginAttr("fileName") final String fileName,
@PluginAttr("append") final String append,
@PluginAttr("locking") final String locking,
@PluginAttr("name") final String name,
@PluginAttr("immediateFlush") final String immediateFlush,
@PluginAttr("ignoreExceptions") final String ignore,
@PluginAttr("bufferedIO") final String bufferedIO,
@PluginElement("layout") Layout<S> layout,
@PluginElement("layout") Layout<? extends Serializable> layout,
@PluginElement("filters") final Filter filter,
@PluginAttr("advertise") final String advertise,
@PluginAttr("advertiseURI") final String advertiseURI,
Expand Down Expand Up @@ -133,10 +133,7 @@ public static <S extends Serializable> FileAppender<S> createAppender(@PluginAtt
return null;
}
if (layout == null) {
@SuppressWarnings({ "unchecked", "UnnecessaryLocalVariable" })
final
Layout<S> l = (Layout<S>) PatternLayout.createLayout(null, null, null, null, null);
layout = l;
layout = PatternLayout.createLayout(null, null, null, null, null);
}

final FileManager manager = FileManager.getFileManager(fileName, isAppend, isLocking, isBuffered, advertiseURI,
Expand All @@ -146,7 +143,7 @@ public static <S extends Serializable> FileAppender<S> createAppender(@PluginAtt
}


return new FileAppender<S>(name, layout, filter, manager, fileName, ignoreExceptions, isFlush,
return new FileAppender(name, layout, filter, manager, fileName, ignoreExceptions, isFlush,
isAdvertise ? config.getAdvertiser() : null);
}
}
Loading