Consistently log exceptions when using the status logger. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/98bbbf55 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/98bbbf55 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/98bbbf55
Branch: refs/heads/LOG4J2-1161 Commit: 98bbbf55b5989491ca5c65ae762469876d3ca893 Parents: 82cbdee Author: ggregory <ggreg...@apache.org> Authored: Tue Oct 20 15:31:02 2015 -0700 Committer: ggregory <ggreg...@apache.org> Committed: Tue Oct 20 15:31:02 2015 -0700 ---------------------------------------------------------------------- .../log4j/core/appender/AbstractManager.java | 21 ++++++++++++++++++++ .../core/appender/MemoryMappedFileManager.java | 7 ------- .../core/appender/OutputStreamManager.java | 8 ++++---- .../core/appender/RandomAccessFileManager.java | 5 ++--- .../appender/db/AbstractDatabaseManager.java | 6 ++---- .../appender/db/jdbc/JdbcDatabaseManager.java | 4 ++-- .../appender/db/jpa/JpaDatabaseManager.java | 2 +- .../appender/rolling/RollingFileManager.java | 12 +++++------ .../rolling/RollingRandomAccessFileManager.java | 8 ++++---- .../logging/log4j/core/net/SmtpManager.java | 8 ++++---- .../flume/appender/FlumePersistentManager.java | 10 +++++----- 11 files changed, 51 insertions(+), 40 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98bbbf55/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java index 1d0e3f1..d256a4f 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java @@ -21,7 +21,9 @@ import java.util.Map; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; +import org.apache.logging.log4j.Level; import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.message.Message; import org.apache.logging.log4j.status.StatusLogger; /** @@ -142,4 +144,23 @@ public abstract class AbstractManager { public Map<String, String> getContentFormat() { return new HashMap<>(); } + + protected void log(Level level, String message, Throwable throwable) { + Message m = LOGGER.getMessageFactory().newMessage("{} {} {}: {}", + getClass().getSimpleName(), getName(), message, throwable); + LOGGER.log(level, m, throwable); + } + + protected void logDebug(String message, Throwable throwable) { + log(Level.DEBUG, message, throwable); + } + + protected void logError(String message, Throwable throwable) { + log(Level.ERROR, message, throwable); + } + + protected void logWarn(String message, Throwable throwable) { + log(Level.WARN, message, throwable); + } + } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98bbbf55/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java index 9bc5d48..0aa4be6 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java @@ -35,7 +35,6 @@ import java.util.Objects; import org.apache.logging.log4j.core.Layout; import org.apache.logging.log4j.core.util.Closer; import org.apache.logging.log4j.core.util.NullOutputStream; -import org.apache.logging.log4j.message.Message; /** * Extends OutputStreamManager but instead of using a buffered output stream, this class maps a region of a file into @@ -125,12 +124,6 @@ public class MemoryMappedFileManager extends OutputStreamManager { // already done in AbstractOutputStreamAppender.append } - protected void logError(String message, Throwable throwable) { - Message m = LOGGER.getMessageFactory().newMessage("{} {} {}: {}", - getClass().getSimpleName(), getName(), message, throwable); - LOGGER.error(m, throwable); - } - private synchronized void remap() { final long offset = this.mappingOffset + mappedBuffer.position(); final int length = mappedBuffer.remaining() + regionLength; http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98bbbf55/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java index eea6d62..99c3321 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java @@ -40,8 +40,8 @@ public class OutputStreamManager extends AbstractManager { if (header != null) { try { this.os.write(header, 0, header.length); - } catch (final IOException ioe) { - LOGGER.error("Unable to write header", ioe); + } catch (final IOException e) { + logError("unable to write header", e); } } } @@ -102,7 +102,7 @@ public class OutputStreamManager extends AbstractManager { os.write(header, 0, header.length); this.os = os; // only update field if os.write() succeeded } catch (final IOException ioe) { - LOGGER.error("Unable to write header", ioe); + logError("unable to write header", ioe); } } else { this.os = os; @@ -144,7 +144,7 @@ public class OutputStreamManager extends AbstractManager { try { stream.close(); } catch (final IOException ex) { - LOGGER.error("Unable to close stream " + getName() + ". " + ex); + logError("unable to close stream", ex); } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98bbbf55/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java index 4d667d9..c6627df 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java @@ -122,8 +122,7 @@ public class RandomAccessFileManager extends OutputStreamManager { try { randomAccessFile.close(); } catch (final IOException ex) { - LOGGER.error("Unable to close RandomAccessFile " + getName() + ". " - + ex); + logError("unable to close RandomAccessFile", ex); } } @@ -223,7 +222,7 @@ public class RandomAccessFileManager extends OutputStreamManager { return new RandomAccessFileManager(raf, name, os, data.immediateFlush, data.bufferSize, data.advertiseURI, data.layout, writeHeader); } catch (final Exception ex) { - LOGGER.error("RandomAccessFileManager (" + name + ") " + ex); + LOGGER.error("RandomAccessFileManager (" + name + ") " + ex, ex); } return null; } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98bbbf55/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java index f46d983..67c7e4a 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java @@ -64,8 +64,7 @@ public abstract class AbstractDatabaseManager extends AbstractManager implements this.startupInternal(); this.running = true; } catch (final Exception e) { - LOGGER.error("Could not perform database startup operations using logging manager [{}].", - this.getName(), e); + logError("could not perform database startup operations", e); } } } @@ -89,8 +88,7 @@ public abstract class AbstractDatabaseManager extends AbstractManager implements try { this.shutdownInternal(); } catch (final Exception e) { - LOGGER.warn("Error while performing database shutdown operations using logging manager [{}].", - this.getName(), e); + logWarn("caught exception while performing database shutdown operations", e); } finally { this.running = false; } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98bbbf55/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java index e06ab18..a1d6204 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java @@ -144,7 +144,7 @@ public final class JdbcDatabaseManager extends AbstractDatabaseManager { try { Closer.close(this.statement); } catch (final Exception e) { - LOGGER.warn("Failed to close SQL statement logging event or flushing buffer.", e); + logWarn("failed to close SQL statement logging event or flushing buffer", e); } finally { this.statement = null; } @@ -152,7 +152,7 @@ public final class JdbcDatabaseManager extends AbstractDatabaseManager { try { Closer.close(this.connection); } catch (final Exception e) { - LOGGER.warn("Failed to close database connection logging event or flushing buffer.", e); + logWarn("failed to close database connection logging event or flushing buffer", e); } finally { this.connection = null; } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98bbbf55/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaDatabaseManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaDatabaseManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaDatabaseManager.java index 9e3f92b..480c8b7 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaDatabaseManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaDatabaseManager.java @@ -125,7 +125,7 @@ public final class JpaDatabaseManager extends AbstractDatabaseManager { this.entityManager.close(); } } catch (final Exception e) { - LOGGER.warn("Failed to close entity manager while logging event or flushing buffer.", e); + logWarn("failed to close entity manager while logging event or flushing buffer", e); } finally { this.entityManager = null; } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98bbbf55/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java index f53278f..4674c82 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java @@ -112,13 +112,13 @@ public class RollingFileManager extends FileManager { size = 0; initialTime = System.currentTimeMillis(); createFileAfterRollover(); - } catch (final IOException ex) { - LOGGER.error("FileManager (" + getFileName() + ") " + ex); + } catch (final IOException e) { + logError("failed to create file after rollover", e); } } } - protected void createFileAfterRollover() throws IOException { + protected void createFileAfterRollover() throws IOException { final OutputStream os = new FileOutputStream(getFileName(), isAppend()); if (getBufferSize() > 0) { // negative buffer size means no buffering setOutputStream(new BufferedOutputStream(os, getBufferSize())); @@ -157,8 +157,8 @@ public class RollingFileManager extends FileManager { try { // Block until the asynchronous operation is completed. semaphore.acquire(); - } catch (final InterruptedException ie) { - LOGGER.error("Thread interrupted while attempting to check rollover", ie); + } catch (final InterruptedException e) { + logError("Thread interrupted while attempting to check rollover", e); return false; } @@ -175,7 +175,7 @@ public class RollingFileManager extends FileManager { try { success = descriptor.getSynchronous().execute(); } catch (final Exception ex) { - LOGGER.error("Error in synchronous task", ex); + logError("caught error in synchronous task", ex); } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98bbbf55/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java index e0cf192..dc3261e 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java @@ -72,8 +72,8 @@ public class RollingRandomAccessFileManager extends RollingFileManager { try { // write to the file, not to the buffer: the buffer may not be empty randomAccessFile.write(header, 0, header.length); - } catch (final IOException ioe) { - LOGGER.error("Unable to write header", ioe); + } catch (final IOException e) { + logError("unable to write header", e); } } @@ -139,8 +139,8 @@ public class RollingRandomAccessFileManager extends RollingFileManager { flush(); try { randomAccessFile.close(); - } catch (final IOException ex) { - LOGGER.error("Unable to close RandomAccessFile " + getName() + ". " + ex); + } catch (final IOException e) { + logError("unable to close RandomAccessFile", e); } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98bbbf55/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java index c9d3030..d0c14ca 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java @@ -149,13 +149,13 @@ public class SmtpManager extends AbstractManager { sendMultipartMessage(message, mp); } catch (final MessagingException e) { - LOGGER.error("Error occurred while sending e-mail notification.", e); + logError("caught exception while sending e-mail notification.", e); throw new LoggingException("Error occurred while sending email", e); } catch (final IOException e) { - LOGGER.error("Error occurred while sending e-mail notification.", e); + logError("caught exception while sending e-mail notification.", e); throw new LoggingException("Error occurred while sending email", e); } catch (final RuntimeException e) { - LOGGER.error("Error occurred while sending e-mail notification.", e); + logError("caught exception while sending e-mail notification.", e); throw new LoggingException("Error occurred while sending email", e); } } @@ -288,7 +288,7 @@ public class SmtpManager extends AbstractManager { .setRecipients(Message.RecipientType.TO, data.to).setRecipients(Message.RecipientType.CC, data.cc) .setRecipients(Message.RecipientType.BCC, data.bcc).setSubject(data.subject).getMimeMessage(); } catch (final MessagingException e) { - LOGGER.error("Could not set SmtpAppender message options.", e); + logError("could not set SmtpAppender message options", e); message = null; } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98bbbf55/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java ---------------------------------------------------------------------- diff --git a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java index 15ce921..9fa7a4e 100644 --- a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java +++ b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java @@ -227,25 +227,25 @@ public class FlumePersistentManager extends FlumeAvroManager { threadPool.shutdown(); try { threadPool.awaitTermination(SHUTDOWN_WAIT, TimeUnit.SECONDS); - } catch (final InterruptedException ie) { - LOGGER.warn("PersistentManager Thread pool failed to shut down"); + } catch (final InterruptedException e) { + logWarn("PersistentManager Thread pool failed to shut down", e); } try { worker.join(); } catch (final InterruptedException ex) { - LOGGER.debug("Interrupted while waiting for worker to complete"); + logDebug("interrupted while waiting for worker to complete", ex); } try { LOGGER.debug("FlumePersistenceManager dataset status: {}", database.getStats(new StatsConfig())); database.close(); } catch (final Exception ex) { - LOGGER.warn("Failed to close database", ex); + logWarn("failed to close database", ex); } try { environment.cleanLog(); environment.close(); } catch (final Exception ex) { - LOGGER.warn("Failed to close environment", ex); + logWarn("failed to close environment", ex); } super.releaseSub(); }