自定义log4j2 appender不能与storm一起工作

qmb5sa22  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(305)

我们在storm cluster的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>

在storm拓扑生成器主类中

config.put("topology.classpath","/usr/local/Cellar/storm/mylogger.jar");

在喷口里

private static org.slf4j.Logger _logger = LoggerFactory.getLogger("custom-    logger");

现在它检测到我的jar并在日志文件中写入一行日志,但是post不会将任何一行日志记录到日志文件中。

0s0u357o

0s0u357o1#

logger元素的name属性应该是您的包名,您确定“customlogger”是正确的吗?
如果在代码中使用slf4j,则必须将log4j2 slf4j绑定添加到类路径中,有关详细信息,请参阅本文。
希望有帮助。

相关问题