Skip to content
This repository has been archived by the owner on Jun 29, 2023. It is now read-only.

Sender specific configurations on sender factory #34

Closed
wants to merge 1 commit into from
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
@@ -1,5 +1,7 @@
package biz.paluch.logging.gelf.intern;

import java.util.Map;

/**
* Configuration for a Gelf Sender.
*/
Expand All @@ -22,4 +24,9 @@ public interface GelfSenderConfiguration {
* @return the ErrorReporter to report any errors
*/
ErrorReporter getErrorReporter();

/**
* Returns some sender specific configurations
*/
Map<String,Object> getSpecificConfigurations();
}
@@ -1,16 +1,17 @@
package biz.paluch.logging.gelf.intern;

import biz.paluch.logging.gelf.intern.sender.DefaultGelfSenderProvider;
import biz.paluch.logging.gelf.intern.sender.RedisGelfSenderProvider;

import java.io.IOException;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.ServiceLoader;

import biz.paluch.logging.gelf.intern.sender.DefaultGelfSenderProvider;
import biz.paluch.logging.gelf.intern.sender.RedisGelfSenderProvider;

/**
* @author <a href="mailto:mpaluch@paluch.biz">Mark Paluch</a>
* @since 26.09.13 15:12
Expand All @@ -23,7 +24,7 @@ public final class GelfSenderFactory {
* @param hostAndPortProvider
* @return GelfSender.
*/
public static GelfSender createSender(final HostAndPortProvider hostAndPortProvider, final ErrorReporter errorReporter) {
public static GelfSender createSender(final HostAndPortProvider hostAndPortProvider, final ErrorReporter errorReporter, final Map<String,Object> senderSpecificConfigurations) {
GelfSenderConfiguration senderConfiguration = new GelfSenderConfiguration() {

@Override
Expand All @@ -40,6 +41,13 @@ public String getHost() {
public ErrorReporter getErrorReporter() {
return errorReporter;
}

@Override
public Map<String, Object> getSpecificConfigurations() {
return senderSpecificConfigurations;
}


};

return createSender(senderConfiguration);
Expand Down
Expand Up @@ -17,6 +17,8 @@
import biz.paluch.logging.gelf.intern.GelfSender;
import biz.paluch.logging.gelf.intern.GelfSenderFactory;

import java.util.Collections;
import java.util.HashMap;
import java.util.logging.ErrorManager;
import java.util.logging.Filter;
import java.util.logging.Handler;
Expand Down Expand Up @@ -104,7 +106,7 @@ public void publish(final LogRecord record) {
}
try {
if (null == gelfSender) {
gelfSender = GelfSenderFactory.createSender(gelfMessageAssembler, this);
gelfSender = createGelfSender();
}
} catch (Exception e) {
reportError("Could not send GELF message: " + e.getMessage(), e, ErrorManager.OPEN_FAILURE);
Expand All @@ -125,6 +127,10 @@ public void publish(final LogRecord record) {
reportError("Could not send GELF message: " + e.getMessage(), e, ErrorManager.FORMAT_FAILURE);
}
}

protected GelfSender createGelfSender() {
return GelfSenderFactory.createSender(gelfMessageAssembler, this, Collections.EMPTY_MAP);
}

@Override
public void reportError(String message, Exception e) {
Expand Down
15 changes: 14 additions & 1 deletion src/main/java/biz/paluch/logging/gelf/log4j/GelfLogAppender.java
Expand Up @@ -8,6 +8,11 @@
import static biz.paluch.logging.gelf.LogMessageField.NamedLogField.SourceSimpleClassName;
import static biz.paluch.logging.gelf.LogMessageField.NamedLogField.ThreadName;
import static biz.paluch.logging.gelf.LogMessageField.NamedLogField.Time;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import biz.paluch.logging.gelf.DynamicMdcMessageField;
import biz.paluch.logging.gelf.LogMessageField;
import biz.paluch.logging.gelf.MdcGelfMessageAssembler;
Expand Down Expand Up @@ -72,6 +77,8 @@ public class GelfLogAppender extends AppenderSkeleton implements ErrorReporter {

protected GelfSender gelfSender;
protected MdcGelfMessageAssembler gelfMessageAssembler;
protected Map<String,Object> senderSpecificProperties = new HashMap<String,Object>();


public GelfLogAppender() {
gelfMessageAssembler = new MdcGelfMessageAssembler();
Expand All @@ -87,7 +94,7 @@ protected void append(LoggingEvent event) {

try {
if (null == gelfSender) {
gelfSender = GelfSenderFactory.createSender(gelfMessageAssembler, this);
gelfSender = createGelfSender();
}

GelfMessage message = createGelfMessage(event);
Expand All @@ -104,6 +111,10 @@ protected void append(LoggingEvent event) {
}
}

protected GelfSender createGelfSender() {
return GelfSenderFactory.createSender(gelfMessageAssembler, this, Collections.EMPTY_MAP);
}

public void reportError(String message, Exception exception) {
errorHandler.error(message, exception, 0);
}
Expand Down Expand Up @@ -248,4 +259,6 @@ public boolean isIncludeFullMdc() {
public void setIncludeFullMdc(boolean includeFullMdc) {
gelfMessageAssembler.setIncludeFullMdc(includeFullMdc);
}


}
Expand Up @@ -8,6 +8,11 @@
import static biz.paluch.logging.gelf.LogMessageField.NamedLogField.SourceSimpleClassName;
import static biz.paluch.logging.gelf.LogMessageField.NamedLogField.ThreadName;
import static biz.paluch.logging.gelf.LogMessageField.NamedLogField.Time;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import biz.paluch.logging.gelf.DynamicMdcMessageField;
import biz.paluch.logging.gelf.LogMessageField;
import biz.paluch.logging.gelf.MdcGelfMessageAssembler;
Expand Down Expand Up @@ -168,6 +173,7 @@
public class GelfLogAppender extends AbstractAppender implements ErrorReporter {
private static final Logger LOGGER = StatusLogger.getLogger();

protected Map<String,Object> senderSpecificProperties = new HashMap<String,Object>();
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This field is not used.

protected GelfSender gelfSender;
private MdcGelfMessageAssembler gelfMessageAssembler;

Expand Down Expand Up @@ -341,8 +347,15 @@ public void stop() {
@Override
public void start() {
if (null == gelfSender) {
gelfSender = GelfSenderFactory.createSender(gelfMessageAssembler, this);
gelfSender = createGelfSender();
}
super.start();
}

protected GelfSender createGelfSender() {
return GelfSenderFactory.createSender(gelfMessageAssembler, this, Collections.EMPTY_MAP);
}



}
Expand Up @@ -8,6 +8,11 @@
import static biz.paluch.logging.gelf.LogMessageField.NamedLogField.SourceSimpleClassName;
import static biz.paluch.logging.gelf.LogMessageField.NamedLogField.ThreadName;
import static biz.paluch.logging.gelf.LogMessageField.NamedLogField.Time;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import biz.paluch.logging.gelf.DynamicMdcMessageField;
import biz.paluch.logging.gelf.LogMessageField;
import biz.paluch.logging.gelf.MdcGelfMessageAssembler;
Expand Down Expand Up @@ -73,6 +78,7 @@ public class GelfLogbackAppender extends AppenderBase<ILoggingEvent> implements

protected GelfSender gelfSender;
protected MdcGelfMessageAssembler gelfMessageAssembler;
protected Map<String,Object> senderSpecificProperties = new HashMap<String,Object>();
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This field is not used.


public GelfLogbackAppender() {
gelfMessageAssembler = new MdcGelfMessageAssembler();
Expand All @@ -88,7 +94,7 @@ protected void append(ILoggingEvent event) {

try {
if (null == gelfSender) {
gelfSender = GelfSenderFactory.createSender(gelfMessageAssembler, this);
gelfSender = createGelfSender();
}

GelfMessage message = createGelfMessage(event);
Expand All @@ -104,6 +110,11 @@ protected void append(ILoggingEvent event) {
reportError("Could not send GELF message: " + e.getMessage(), e);
}
}

protected GelfSender createGelfSender() {
return GelfSenderFactory.createSender(gelfMessageAssembler, this, Collections.EMPTY_MAP);
}


public void reportError(String message, Exception exception) {
addError(message, exception);
Expand Down Expand Up @@ -236,4 +247,8 @@ public boolean isIncludeFullMdc() {
public void setIncludeFullMdc(boolean includeFullMdc) {
gelfMessageAssembler.setIncludeFullMdc(includeFullMdc);
}




}
@@ -1,5 +1,8 @@
package biz.paluch.logging.gelf.standalone;

import java.util.HashMap;
import java.util.Map;

import biz.paluch.logging.gelf.intern.ErrorReporter;
import biz.paluch.logging.gelf.intern.GelfSenderConfiguration;

Expand All @@ -14,6 +17,7 @@ public class DefaultGelfSenderConfiguration implements GelfSenderConfiguration {
private ErrorReporter errorReporter;
private String host;
private int port;
protected Map<String,Object> specificConfigurations = new HashMap<String,Object>();
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about initializing the field with Collections.EMPTY_SET since you provide a setter?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right!


public DefaultGelfSenderConfiguration() {
errorReporter = new Slf4jErrorReporter();
Expand Down Expand Up @@ -49,4 +53,17 @@ public void setHost(String host) {
public void setPort(int port) {
this.port = port;
}

@Override
public Map<String, Object> getSpecificConfigurations() {
return specificConfigurations;
}

public void setSpecificConfigurations(Map<String, Object> specificConfigurations) {
this.specificConfigurations = specificConfigurations;
}




}
Expand Up @@ -17,6 +17,8 @@
import java.io.IOException;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Collections;
import java.util.HashMap;

@RunWith(MockitoJUnitRunner.class)
public class GelfSenderFactoryTest {
Expand Down Expand Up @@ -56,15 +58,15 @@ public void testCreateSender() throws Exception {
mockSupports();
when(senderProvider.create(any(GelfSenderConfiguration.class))).thenReturn(sender);

GelfSender result = sut.createSender(assembler, errorReporter);
GelfSender result = sut.createSender(assembler, errorReporter, Collections.EMPTY_MAP);

assertSame(sender, result);
}

@Test
public void testCreateSenderFail() throws Exception {

GelfSender result = sut.createSender(assembler, errorReporter);
GelfSender result = sut.createSender(assembler, errorReporter,Collections.EMPTY_MAP);
assertNull(result);
}

Expand All @@ -74,7 +76,7 @@ public void testCreateSenderFailUnknownHostException() throws Exception {
mockSupports();
when(senderProvider.create(any(GelfSenderConfiguration.class))).thenThrow(new UnknownHostException());

GelfSender result = sut.createSender(assembler, errorReporter);
GelfSender result = sut.createSender(assembler, errorReporter,Collections.EMPTY_MAP);
assertNull(result);

verify(errorReporter).reportError(anyString(), any(UnknownHostException.class));
Expand All @@ -87,7 +89,7 @@ public void testCreateSenderFailSocketException() throws Exception {
mockSupports();
when(senderProvider.create(any(GelfSenderConfiguration.class))).thenThrow(new SocketException());

GelfSender result = sut.createSender(assembler, errorReporter);
GelfSender result = sut.createSender(assembler, errorReporter,Collections.EMPTY_MAP);
assertNull(result);

verify(errorReporter).reportError(anyString(), any(SocketException.class));
Expand All @@ -100,7 +102,7 @@ public void testCreateSenderFailIOException() throws Exception {
mockSupports();
when(senderProvider.create(any(GelfSenderConfiguration.class))).thenThrow(new IOException());

GelfSender result = sut.createSender(assembler, errorReporter);
GelfSender result = sut.createSender(assembler, errorReporter,Collections.EMPTY_MAP);
assertNull(result);

verify(errorReporter).reportError(anyString(), any(IOException.class));
Expand All @@ -113,7 +115,7 @@ public void testCreateSenderFailNPE() throws Exception {
mockSupports();
when(senderProvider.create(any(GelfSenderConfiguration.class))).thenThrow(new NullPointerException());

sut.createSender(assembler, errorReporter);
sut.createSender(assembler, errorReporter,new HashMap<String, Object>());

}

Expand Down