如何在stormcrawler的storm local模式下设置日志级别?
Storm Local模式下调整StormCrawler 2.8日志级别方案
以下是几种有效的解决方法,针对你之前尝试无效的情况逐一说明:
方法一:启动时通过JVM参数指定自定义Log4j2配置文件
Storm本地模式默认优先读取Storm安装目录下的日志配置,你可以在启动命令中直接指定自定义的log4j2.xml路径,强制使用该配置:
storm local -c storm.log4j2.conf.file=/绝对路径/到你的/log4j2.xml target/你的爬虫jar包.jar crawler.flux
如果用相对路径,确保执行命令的工作目录能正确找到该文件。
方法二:修改Storm本地模式默认日志配置文件
Storm本地模式会加载$STORM_HOME/conf/log4j2.xml(注意不是worker.xml或cluster.xml),直接编辑这个文件:
- 找到
<Root level="INFO">标签,将level值改为WARN或ERROR - 若只想调整StormCrawler相关日志,可添加单独的Logger配置:
<Logger name="com.digitalpebble.stormcrawler" level="WARN" additivity="false"> <AppenderRef ref="Console"/> </Logger>
保存后重启本地模式即可生效。
方法三:项目内置Log4j2配置并指定加载路径
如果是自定义StormCrawler项目,在src/main/resources下添加log4j2.xml(内容参考下方示例),然后启动时通过JVM参数指定加载该配置:
storm local -c java.opts="-Dlog4j.configurationFile=src/main/resources/log4j2.xml" target/你的爬虫jar包.jar crawler.flux
示例log4j2.xml配置
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <!-- 针对StormCrawler包设置日志级别 --> <Logger name="com.digitalpebble.stormcrawler" level="WARN" additivity="false"> <AppenderRef ref="Console"/> </Logger> <!-- 针对Storm核心包设置日志级别 --> <Logger name="org.apache.storm" level="WARN" additivity="false"> <AppenderRef ref="Console"/> </Logger> <!-- 全局根日志级别 --> <Root level="WARN"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration>
为什么之前的方法无效?
worker.xml/cluster.xml是集群模式下的配置文件,本地模式不会读取- 单独在项目resources目录放
log4j2.xml,Storm本地模式会优先加载Storm安装目录下的配置,所以不生效 storm set_log_level命令仅针对集群模式的Topology生效,本地模式不支持
内容的提问来源于stack exchange,提问作者user17022777
相关产品推荐
相关产品推荐

