[Everyday it gets a little easier. But you gotta do it every day. That's the hard part. But it does get easier. ——Bojack Horseman S2E12
]
1.背景
代码里的自定义日志打印使用的是log4j,storm使用的是logback,自定义日志输出。
2.步骤
(1)在代码中使用slf4j替换log4j
package cn.com.maixiaohai.tianjiao.etl.realtime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RedundantFields {
private static Logger redundant = LoggerFactory.getLogger(RedundantFields.class);
...
}
(2)配置logback的xml文件
地址 ${storm.log.dir}/logback/worker.xml
以下为logback配置的基本结构:
根据logback配置的结构,需要增加logger和对应的appender:
<appender name="REDUNDANT" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${storm.log.dir}/redundant-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZ} %c{1} [%p] %m%n</pattern>
</encoder>
</appender>
<logger name="cn.com.maixiaohai.tianjiao.etl.realtime.RedundantFields" additivity="false">
<level value="INFO"/>
<appender-ref ref="REDUNDANT"/>
</logger>
appender的name和logger中appender-ref的ref值必须一致,logger的name为对应java类路径此路径${storm.log.dir}/redundant-%d{yyyy-MM-dd}.log会有需要的输出