我想在本地运行storm starter项目。我遵照以下指示-
https://github.com/apache/storm/tree/master/examples/storm-starter
但是当我尝试执行storm jar命令时
ERROR StatusLogger Invalid URL C:/Users/xyzabc/apache-storm-0.10.0-beta/log4j2/cluster.xml java.net.MalformedURLException: unknown protocol: c
我认为这与cluster.xml和worker.xml中定义的以下部分有关
<RollingFile name="METRICS"
fileName="${sys:storm.log.dir}/metrics.log"
filePattern="${sys:storm.log.dir}/metrics.log.%i">
显然文件名应该是
file:///C:/Users/xyzabc/apache-storm-0.10.0-beta/log4j2/cluster.xml
但当我试图通过设置
<RollingFile name="METRICS"
fileName="file:///${sys:storm.log.dir}/metrics.log"
filePattern="file:///${sys:storm.log.dir}/metrics.log.%i">
我得到这个错误
ERROR Unable to create file file:///C:\Users\xyzabc\apache-storm-0.10.0-beta\logs/metrics.log java.io.IOException: The filename, directory name, or volume label syntax is incorrect
如您所见,它完全弄乱了文件路径。
有没有一种方法可以在xml属性中正确呈现“file://”?
4条答案
按热度按时间lf5gs5x21#
我也遇到了同样的问题,我编辑了storm-config.cmd并将协议添加到url env vars中:
我相信您会遇到“无法创建文件”的问题,因为它需要的是路径,而不是url。尝试还原这些更改,看看是否有效。
bfhwhh0e2#
删除\log4j2\worker.xml和\log4j2\cluster.xml中的所有更改。
编辑\bin\storm-config.cmd并修改以下指定条目。
从
设置storm\u logback\u configuration\u file=%storm\u logback\u configuration\u dir%\cluster.xml
到
set storm\u logback\u configuration\u file=文件://%storm\u logback\u configuration\u dir%\cluster.xml
从
设置storm\u logback\u configuration\u file=%storm\u home%\log4j2\cluster.xml
到
set storm\u logback\u configuration\u file=文件://%storm\u home%\log4j2\cluster.xml
在storm-config.cmd中的logback配置条目上添加file://有助于解决此问题。
nzkunb0c3#
根据微软的命名惯例,你应该只在路径上使用反斜杠,但是你有反斜杠和前斜杠。
还有更多:
注意:windows api中的文件i/o函数将“/”转换为“\”,作为将名称转换为nt样式名称的一部分,但使用“\?\”前缀时除外,详见以下各节。
对于文件i/o,路径字符串的“\?\”前缀告诉windows API禁用所有字符串解析,并将其后面的字符串直接发送到文件系统。例如,如果文件系统支持大路径和文件名,则可以超过windows API强制执行的最大路径限制。有关正常最大路径限制的详细信息,请参阅上一节“最大路径长度限制”。
mftmpeh84#
同样的问题,兄弟
但是,在这个错误之后:
如果打开java进程,您将看到,所有这些都可以工作:
截图