如何配置log4j进行包级日志记录?

70gysomp  于 2021-06-04  发布在  Flume
关注(0)|答案(2)|浏览(514)

我想登录到多个日志文件(flume和console)。如何将log4j设置为包级别?将com.mypackage.myclass设置为flume,将其他包设置为console。。

drkbr07n

drkbr07n1#

查看此博客文章http://veerasundar.com/blog/2009/07/log4j-tutorial-adding-log4j-logging-to-your-project/
它有一个完整的pdf供下载如何添加log4j到项目。
您需要为不同的包定义类别。所有内容都在上面的pdf中解释。
希望有帮助。

vdgimpew

vdgimpew2#

首先,您需要将log4j配置为具有两个命名的记录器,一个发送到控制台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。

相关问题