package test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import junit.framework.Assert; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestLoggerSerialization { static class LoggerHolder implements Serializable { private static final long serialVersionUID = 1L; private Logger log = LoggerFactory.getLogger(LoggerHolder.class); @Override public String toString() { return "log=" + getLog(); } public Logger getLog() { return log; } } @Test public void canLoggerBeSerialized() throws IOException, ClassNotFoundException { LoggerHolder lh1 = new LoggerHolder(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(baos); out.writeObject(lh1); out.close(); lh1 = null; byte[] serializedLoggerHolder = baos.toByteArray(); InputStream is = new ByteArrayInputStream(serializedLoggerHolder); ObjectInputStream in = new ObjectInputStream(is); LoggerHolder lh2 = (LoggerHolder) in.readObject(); Assert.assertNotNull(lh2); Assert.assertNotNull(lh2.getLog()); lh2.getLog().info("You must see this message as a log message"); } }