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>