我想登录多个日志文件(水槽和控制台)。如何将 log4j 设置为包级别?即 com.mypackage.myclass 进入 flume 和其他包进入控制台..
1304 次
2 回答
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。
于 2012-05-02T12:35:37.513 回答
-2
检查此博客文章 http://veerasundar.com/blog/2009/07/log4j-tutorial-adding-log4j-logging-to-your-project/
它有一个完整的 PDF 可供下载,了解如何将 log4j 添加到项目中。
您需要为不同的包定义类别。上面的 PDF 中解释了所有内容。
希望能帮助到你。
于 2011-09-29T05:24:27.983 回答