我想登录多个日志文件(水槽和控制台)。如何将log4j设置为包级别?即将com.mypackage.myclass设置为flume和其他包进入控制台..
答案 0 :(得分:0)
首先,您需要将log4j配置为具有两个命名记录器,一个发送到Console appender,另一个发送到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。
答案 1 :(得分:-2)
查看此博文 http://veerasundar.com/blog/2009/07/log4j-tutorial-adding-log4j-logging-to-your-project/
它有一个完整的PDF供下载,可以下载如何将log4j添加到项目中。
您需要为不同的包定义类别。以上PDF中解释了所有内容。
希望它有所帮助。