如何在使用hadoop时使用logger api编写java日志文件

2024-02-10

我写了一个我想调试的地图缩减代码。

为此,我无法使用标准输出,因为除非发生错误,否则 Hadoop 平台不会将其打印到屏幕上。

相反,我尝试使用记录器来创建日志文件。

我使用处理程序将其拆分为两个文件,不幸的是“严重”日志文件为空,而通用日志文件仅记录主线程中发生的事情,而不是映射减少函数中发生的事情。

问题如下:

hadoop 和日志文件有问题还是我的记录器配置有问题?如果是这样如何纠正。

日志配置代码: 我对整个应用程序使用一个记录器(这次是根记录器)

public static Logger configureLogging() 
    {
        try
        {
            logger=Logger.getLogger("");
            //FileSystem hdfs=FileSystem.get(URI.create(Misc.S3FS),getConfiguration());
            logger.setLevel(Level.ALL);

            //StreamHandler handler=new StreamHandler(hdfs.create(new Path(Misc.LOGS_PATH+"mylog.log")),new SimpleFormatter());
            FileHandler handler=new FileHandler(Misc.LOGS_PATH+"mylog.xml",true);   
            FileHandler severeHandler=new FileHandler(Misc.LOGS_PATH+"mylogSevere.xml",true);
            severeHandler.setLevel(Level.INFO);
            logger.addHandler(handler);
            logger.addHandler(severeHandler);

        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        return logger;

    }

Hadoop 附带预配置的 log4j。您所要做的就是导入两个类:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

现在您可以在映射器、化简器以及任何您想要的地方定义记录器:

private static final Log LOG = LogFactory.getLog(MyClass.class);

并记录您需要的内容:

LOG.info("My message");

这些消息将在作业执行期间显示。您可以调整 log4j 配置

conf/log4j.properties
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在使用hadoop时使用logger api编写java日志文件 的相关文章

随机推荐