我们在风暴群的worker.xml中创建了以下记录器配置
<!-- This is new appender we want to add -->
<FDPRollingFile name="RollingFileInfo" filename="${sys:storm.log.dir}/userlogs/info-${sys:logfile.name}"
filepattern="${sys:storm.log.dir}/userlogs/info-${sys:logfile.name}.%d{yyyy-MM-dd-HH-mm}" append="true">
<PatternLayout>
<pattern>${patternFdpNew}</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="100 MB"/> <!-- Or every 100 MB -->
</Policies>
</FDPRollingFile>
<FDPRollingFile name="RollingFileDebug" filename="${sys:storm.log.dir}/userlogs/debug-${sys:logfile.name}"
filepattern="${sys:storm.log.dir}/userlogs/debug-${sys:logfile.name}.%d{yyyy-MM-dd-HH-mm}" append="true">
<PatternLayout>
<pattern>${patternFdpNew}</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="100 MB"/> <!-- Or every 100 MB -->
</Policies>
</FDPRollingFile>
<FDPRollingFile name="RollingFileError" filename="${sys:storm.log.dir}/userlogs/error-${sys:logfile.name}"
filepattern="${sys:storm.log.dir}/userlogs/error-${sys:logfile.name}.%d{yyyy-MM-dd-HH-mm}" append="true">
<PatternLayout>
<pattern>${patternFdpNew}</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="100 MB"/> <!-- Or every 100 MB -->
</Policies>
</FDPRollingFile>
<!-- This is new appender we want to add -->
以及以下方式定义的自定义记录器
<Logger name="custom-logger" additivity="false" level="INFO">
<appender-ref ref="RollingFileDebug" level="TRACE"/>
<appender-ref ref="RollingFileError" level="WARN"/>
<appender-ref ref="RollingFileInfo" level="INFO"/>
</Logger>
在风暴拓扑构建器主类
中 config.put("topology.classpath","/usr/local/Cellar/storm/mylogger.jar");
和In spout
private static org.slf4j.Logger _logger = LoggerFactory.getLogger("custom- logger");
现在它会检测到我的jar并在日志文件中写入一行日志,但发布不会将任何行记录到日志文件中会发生什么。
答案 0 :(得分:0)
logger元素的name属性应该是您的包名,您确定“custom-logger”是否正确?
如果您在代码中使用slf4j,则必须将log4j2 slf4j绑定添加到类路径,有关详细信息,请参阅this。
希望它有所帮助。