/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.funambol.util;
import java.io.IOException;
import java.util.Vector;
/**
* an appender that contains multiple appenders
*/
public class MultipleAppender implements Appender {
private Vector appenders = new Vector();
/**
* ad an appender to the list of appenders
* @param appender
*/
public void addAppender(Appender appender) {
appenders.addElement(appender);
}
/**
* remove given appender if present
* @param appender
* @return true if appender has been found and removed
*/
public boolean removeAppender(Appender appender) {
return appenders.removeElement(appender);
}
/**
* remove all the appenders
*/
public void removeAllAppenders() {
appenders.removeAllElements();
}
public int getNumAppenders() {
return appenders.size();
}
public void initLogFile() {
for (int i = 0; i < appenders.size(); i++) {
((Appender) appenders.elementAt(i)).initLogFile();
}
}
public void openLogFile() {
for (int i = 0; i < appenders.size(); i++) {
((Appender) appenders.elementAt(i)).openLogFile();
}
}
public void closeLogFile() {
for (int i = 0; i< appenders.size(); i++) {
((Appender)appenders.elementAt(i)).closeLogFile();
}
}
public void deleteLogFile() {
for (int i = 0; i< appenders.size(); i++) {
((Appender)appenders.elementAt(i)).deleteLogFile();
}
}
/**
* Perform additional actions needed when setting a new level.
*/
public void setLogLevel(int level) {
for (int i = 0; i< appenders.size(); i++) {
((Appender)appenders.elementAt(i)).setLogLevel(level);
}
}
public void writeLogMessage(String level, String msg) throws IOException {
for (int i = 0; i< appenders.size(); i++) {
((Appender)appenders.elementAt(i)).writeLogMessage(level, msg);
}
}
/**
* Retrieve the first valid log content avoiding the CONSOLE type one, that
* doesn't contain useful informations;
*/
public LogContent getLogContent() throws IOException {
LogContent logContent = null;
for(int i=0;i<appenders.size();++i) {
Appender app = (Appender)appenders.elementAt(i);
try {
logContent = app.getLogContent();
break;
} catch (IOException ioe) {
// This appender does not have a readable content, just skip it
}
}
if (logContent != null) {
return logContent;
} else {
throw new IOException("Cannot get log content");
}
}
}