当我们从本地集群运行时,我想关闭默认提供的日志记录功能。目前它在控制台上记录了这么多信息。
以下是日志示例:
261 [main] INFO backtype.storm.daemon.task - Shut down task Getting-Started-Toplogie-1-1376388324:2
2261 [main] INFO backtype.storm.daemon.task - Shutting down task Getting-Started-Toplogie-1-1376388324:1
2262 [Thread-24] INFO backtype.storm.util - Async loop interrupted!
2276 [main] INFO backtype.storm.daemon.task - Shut down task Getting-Started-Toplogie-1-1376388324:1
2278 [main] INFO backtype.storm.daemon.worker - Terminating zmq context
2279 [main] INFO backtype.storm.daemon.worker - Disconnecting from storm cluster state context
2279 [main] INFO backtype.storm.daemon.worker - Waiting for heartbeat thread to die
2279 [Thread-27] INFO backtype.storm.util - Async loop interrupted!
2308 [main] INFO backtype.storm.testing - Shutting down in process zookeeper
2309 [main] INFO backtype.storm.testing - Done shutting down in process zookeeper
2309 [main] INFO backtype.storm.testing - Deleting temporary path /tmp/255fe7c8-1407-4f43-8771-2217905232ab
在浏览了许多文档之后,我得到了下面的代码,我可以在类内关闭日志记录。
static Logger logger = Logger.getLogger(TopologyMain.class);
public static void main(String[] args) throws InterruptedException, AlreadyAliveException, InvalidTopologyException {
logger.setLevel((Level) Level.FATAL);
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
输出(正确): 0 [main] FATAL TopologyMain - Here is some FATAL
但我需要更改storm/zookeper等的日志配置。。
有人能帮忙吗?
更新:下面是我尝试过的代码,但它不起作用。我尝试了版本0.7.1、0.8.2和0.9.0-wip*
//Configuration
Config conf = new Config();
conf.put(Config.TOPOLOGY_DEBUG, false); //Tried this alone
conf.setDebug(false); //Tried this alone & tried both together as well.. No change :-(
6条答案
按热度按时间0wi1tuuw1#
在log4j.xml中添加以下代码。它只会打印您想要的日志和控制台输出:-
并在类中使用logger.getlogger(class)。
kr98yfug2#
有一个关于动态设置日志级别的很好的文档。它可以通过ui和cli来完成。我觉得后者更好。启动拓扑后,只需使用以下命令(从storm的安装目录中):
有关更多详细信息,请查看此链接
esbemjvw3#
我在尝试使用本地测试环境评估storm时发现了这个问题。我创建了一个项目取决于
storm-core
版本1.1.0
,这是撰写本文时最新的稳定版本,所以我不知道这是否适用于其他人。检查maven依赖关系,并扩展
storm-core-1.1.0.jar
显示库的log4j日志依赖项的配置文件被调用log4j2.xml
. 意识到日志机制是log4j 2之后,我查阅了以下文档:https://logging.apache.org/log4j/2.x/manual/index.html 我创造了一个新的log4j2.xml
文件位于src/main/resources
(我的项目是maven配置的,所以它位于类路径根目录下)。我首先复制现有文件的内容,并将指定记录器的日志级别更改为“off”:运行“hello world”示例,不管
conf.debug()
指示-由于现在根本不存在可以进行日志记录的机制-除了调用System.out.println()
我在我的测试喷口/螺栓。这正是我想要的!希望这能帮助别人而不是我!at0kjp5o4#
在src/main/resources(maven项目)中创建一个文件“log4j2.xml”对我有用!
wlsrxk515#
这适用于我(storm版本0.9.0.1):
zphenhs46#
storm非常健谈,会告诉你很多信息,但是如果你想让它安静下来,你可以将config.topology\u debug设置为false。
当您将config.topology\u debug设置为true时,您告诉storm每次从任何喷口或插销发出元组时都要记录一条消息。