Storm中的日志级级别默认为INFO,并且,日志文件是根据worker号来进行区分的,这样,同一个log文件中的信息不一定是一个业务的,这样就会有以下两个需求出现:
1. 想要进行一些调试信息的输出
2. 调试信息或者业务日志信息想要输出到一些固定的文件中
?
不要怕,不要烦恼,其实Storm已经提供了这样的支持,可以通过自定义logback 下的 cluster.xml 来输出自己想要的日志信息,并且自定义日志输出的格式。下面是我自定义的一些配置,其实跟storm提供的差不多。
<appender name="USER_REDIS_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${storm.log.dir}/user_redis.log</file><!-- log文件输出path -->
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${storm.log.dir}/user_redis.log.%i</fileNamePattern><!-- 保留多个文件的文件命名格式 -->
<minIndex>1</minIndex>
<maxIndex>20</maxIndex><!-- 这两行可以共同配置保留多少个文件 -->
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>100MB</maxFileSize><!-- log文件的最大大小 -->
</triggeringPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd‘T‘HH:mm:ss.SSSZZ} %c{1} [%p] %m%n</pattern> <!-- 输出的日志信息的格式 -->
</encoder>
</appender>
?
<logger name="com.jd.ad.user" additivity="false" >
<!-- name 可以配置哪些包下的日志信息要输出,也可以精准到一个类 -->
<level value="INFO"/><!-- 要输出的日志信息的级别,我要输出业务日志,则配置为INFO -->
<appender-ref ref="USER_REDIS_LOG"/><!-- 上面的appender的name -->
</logger>
?
?
原文:http://1358440610-qq-com.iteye.com/blog/2224751