如何在hadoop中控制日志记录功能?Hadoop使用默认的log4j.properties文件来控制日志.我的用例是控制我的类生成的日志.
像JobTracker,TaskTracker,NameNode和DataNode守护进程这样的Hadoop 守护进程使用来自各自主机节点的log4j.properties文件hadoop-conf-directory.rootLogger设置为"INFO,console",它将INFO级别的所有消息记录到控制台.
我使用Oozie Workflow触发hadoop作业.我尝试通过设置-Dlog4j.configuration=path/to/log4j.properties系统属性将我的自定义log4j.properties文件传递给作业,但它无法正常工作.仍然,它从默认属性中获取log4j属性.
我不应该触摸默认的log4j.properties文件.
我正在使用Oozie-v3.1.3-incubating,hadoop-v0.20和cloudera CDH-v4.0.1.
如何覆盖默认的log4j.properties文件?或者我如何控制我的类的日志?
Chr*_*ite 10
你想用你自己的Log4J文件实现什么?我问,因为日志分布在您的集群中,但是通过将它们记录到rootLogger,您应该能够通过作业跟踪器看到它们(通过向下钻取作业任务尝试).
如果您想使用滚动文件,那么以后很难检索这些文件(同样是因为它们分布在您的任务节点上).
如果要动态设置日志级别,这应该足够简单:
public static Logger log = Logger.getLogger(MyMapper.class);
@Override
protected void setup(Context context) throws IOException,
InterruptedException {
log.setLevel(Level.WARN);
}
Run Code Online (Sandbox Code Playgroud)
如果你想添加自己的appender,那么你应该能够以编程方式(请参阅此SO问题),在上面的设置方法中.
| 归档时间: |
|
| 查看次数: |
7686 次 |
| 最近记录: |