Прежде всего вам необходимо настроить log4j на наличие двух именованных регистраторов, один из которых отправляет приложению Console, а другой - Flume.Затем вы можете написать прокси-класс для выполнения ваших звонков в журнале, который направляет звонки log4j к различным регистраторам в зависимости от пакета, в котором находится вызывающий абонент. Это можно сделать, обратившись к стеку текущего потока, например:
public class Logger
{
public static org.apache.log4j.Logger getLogger()
{
// this will get the calling frame, 0=Thread, 1=this, 2=caller
StackTraceElement stackElement = Thread.currentThread().getStackTrace()[2];
if(stackElement.getClassName().startsWith("the.package.that.goes.to.flume"))
{
return org.apache.log4j.Logger.getLogger("Flume");
}
else
{
return org.apache.log4j.Logger.getLogger("Console");
}
}
}
}
Приведенный выше код предполагает, что вы назвали два регистратора «Flume» и «Console».
Когда вы совершаете вызов регистрации в своем приложении, используйте Logger.getLogger () вместоперейти к log4j напрямую.