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();
     }

Reply via email to