storm 自定义 日志文件

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>

 

 

你可能感兴趣的