alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

/*
 * Copyright (C) The Apache Software Foundation. All rights reserved.
 *
 * This software is published under the terms of the Apache Software License
 * version 1.1, a copy of which has been included  with this distribution in
 * the LICENSE.txt file.
 */
 
package org.apache.log4j.varia;

import  org.apache.log4j.spi.ErrorHandler;
import  org.apache.log4j.spi.LoggingEvent;
import  org.apache.log4j.Appender;
import  org.apache.log4j.Logger;
import  org.apache.log4j.helpers.LogLog;
import java.util.Vector;
 
/**
  *
  * The FallbackErrorHandler implements the ErrorHandler
  * interface such that a secondary appender may be specified.  This
  * secondary appender takes over if the primary appender fails for
  * whatever reason.
  *
  * 

The error message is printed on System.err, and * logged in the new secondary appender. * * @author Ceki Gücü * */ public class FallbackErrorHandler implements ErrorHandler { Appender backup; Appender primary; Vector loggers; public FallbackErrorHandler() { } /** Adds the logger passed as parameter to the list of loggers that we need to search for in case of appender failure. */ public void setLogger(Logger logger) { LogLog.debug("FB: Adding logger [" + logger.getName() + "]."); if(loggers == null) { loggers = new Vector(); } loggers.addElement(logger); } /** No options to activate. */ public void activateOptions() { } /** Prints the message and the stack trace of the exception on System.err. */ public void error(String message, Exception e, int errorCode) { error(message, e, errorCode, null); } /** Prints the message and the stack trace of the exception on System.err. */ public void error(String message, Exception e, int errorCode, LoggingEvent event) { LogLog.debug("FB: The following error reported: " + message, e); LogLog.debug("FB: INITIATING FALLBACK PROCEDURE."); for(int i = 0; i < loggers.size(); i++) { Logger l = (Logger) loggers.elementAt(i); LogLog.debug("FB: Searching for ["+primary.getName()+"] in logger [" +l.getName() + "]."); //if(l.isAttached(primary)) { LogLog.debug("FB: Replacing ["+primary.getName()+"] by [" + backup.getName() + "] in logger ["+ l.getName() +"]."); l.removeAppender(primary); LogLog.debug("FB: Adding appender ["+backup.getName()+"] to logger " + l.getName()); l.addAppender(backup); } } /** Print a the error message passed as parameter on System.err. */ public void error(String message) { //if(firstTime) { //LogLog.error(message); //firstTime = false; //} } /** The appender to which this error handler is attached. */ public void setAppender(Appender primary) { LogLog.debug("FB: Setting primary appender to [" + primary.getName() + "]."); this.primary = primary; } /** Set the backup appender. */ public void setBackupAppender(Appender backup) { LogLog.debug("FB: Setting backup appender to [" + backup.getName() + "]."); this.backup = backup; } }

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.