我正在尝试在本地运行风暴启动项目。我按照
的说明进行操作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:///”?
答案 0 :(得分:2)
从\ log4j2 \ worker.xml和\ log4j2 \ cluster.xml中删除所有更改。
编辑\ bin \ storm-config.cmd并修改以下指定的条目。
这
设置STORM_LOGBACK_CONFIGURATION_FILE =%STORM_LOGBACK_CONFIGURATION_DIR%\ cluster.xml
要
设置STORM_LOGBACK_CONFIGURATION_FILE = file://%STORM_LOGBACK_CONFIGURATION_DIR%\ cluster.xml
这
设置STORM_LOGBACK_CONFIGURATION_FILE =%STORM_HOME%\ log4j2 \ cluster.xml
要
设置STORM_LOGBACK_CONFIGURATION_FILE = file://%STORM_HOME%\ log4j2 \ cluster.xml
在 storm-config.cmd 中的logback配置条目中添加 file:// 有助于解决此问题。
答案 1 :(得分:1)
根据Microsoft命名约定,您应该只使用backslashes on the path,而是使用反斜杠和前斜杠。
file:///C:\Users\xyzabc\apache-storm-0.10.0-beta\logs/metrics.log
还有更多:
注意Windows API转换中的文件I / O函数&#34; /&#34;到&#34; \&#34;作为将名称转换为NT样式名称的一部分,除非使用&#34; \?\&#34;前缀详见以下部分。
对于文件I / O,&#34; \?\&#34;路径字符串的前缀告诉Windows API禁用所有字符串解析并将其后面的字符串直接发送到文件系统。例如,如果文件系统支持大型路径和文件名,则可以超过Windows API强制执行的MAX_PATH限制。有关正常最大路径限制的详细信息,请参阅上一节“最大路径长度限制”。
答案 2 :(得分:0)
同样的问题,兄弟 但是,在此错误之后:
Sheet2
如果你打开java进程,你会看到,一切正常:
{{3}}
答案 3 :(得分:0)
我有同样的问题,我编辑了storm-config.cmd并将协议添加到URL env vars:
if not %STORM_LOGBACK_CONFIGURATION_DIR% == nil (
set STORM_LOGBACK_CONFIGURATION_FILE=file://%STORM_LOGBACK_CONFIGURATION_DIR%\cluster.xml
)
if not defined STORM_LOGBACK_CONFIGURATION_FILE (
set STORM_LOGBACK_CONFIGURATION_FILE=file://%STORM_HOME%\log4j2\cluster.xml
)
我相信你会收到“无法创建文件”的问题,因为它需要一个路径,而不是一个URL。尝试还原这些更改,看看它是否有效。