
# 日志处理
介绍SDK提供的日志配置方法以及日志格式。
#### 日志级别配置
- 日志组件 SDK以SLF接口输出日志，默认使用logback输出日志，引入了logback-core-\*\*\*.jar和logback-classic-\*\*\*.jar这两个jar包，SLF会绑定到logback输出日志。
  
- 日志配置示例 这里以logback日志组件配置为例，相关配置参考如下，如果业务用的log4j2，也可以参考这里对应的logger和appender来配置。
  - 运行日志、调试日志
    ```
    <appender name="wgp_debug_log"
             class="ch.qos.logback.core.rolling.RollingFileAppender">
             <file>../logs/graysdk/debug/debug.log</file>
             <encoder>
                  <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS}|%thread|%level|%logger{0}|:%msg%n</pattern>
             </encoder>
             <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                  <fileNamePattern>../logs/graysdk/debug/debug-%d{yyyyMMddHH}.log
                  </fileNamePattern>
                  <maxHistory>24</maxHistory>
             </rollingPolicy>
             <timeBasedFileNamingAndTriggeringPolicy
                  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                  <maxFileSize>100MB</maxFileSize>
             </timeBasedFileNamingAndTriggeringPolicy>
         </appender>
         <appender name="wgp_run_log"
             class="ch.qos.logback.core.rolling.RollingFileAppender">
             <file>../logs/graysdk/run/run.log</file>
             <encoder>
                  <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS}|%level|%msg%n</pattern>
             </encoder>
             <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                  <fileNamePattern>../logs/graysdk/run/run-%d{yyyyMMddHH}.log
                  </fileNamePattern>
                  <maxHistory>24</maxHistory>
             </rollingPolicy>
             <timeBasedFileNamingAndTriggeringPolicy
                  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                  <maxFileSize>100MB</maxFileSize>
             </timeBasedFileNamingAndTriggeringPolicy>
         </appender>
         <logger name="com.huawei" additivity="false">
             <level value="INFO" />
             <appender-ref ref="debug_log" />
         </logger>
    ```
    
  
  
  - 性能统计日志 logback.xml中定义性能统计日志
    ```
    <appender name="wgp_stat_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>../logs/graysdk/stat/stat.log</file>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS}|%level|%msg%n</pattern>
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> 
                <fileNamePattern>../logs/graysdk/stat/stat-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
                <maxFileSize>100MB</maxFileSize> 
                <maxHistory>7</maxHistory>          <!-- log save days --> 
                <totalSizeCap>10GB</totalSizeCap>   <!-- total log space size -->
            </rollingPolicy>
    </appender>
    <appender name="wgp_stat_service_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>../graysdk/stat/stat_service.log</file>
    <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS}|%msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>../graysdk/stat/stat_service-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
    <maxFileSize>100MB</maxFileSize>
    <maxHistory>7</maxHistory>
    <totalSizeCap>10GB</totalSizeCap>
    </rollingPolicy>
    </appender>
        <logger name="WgpStatLogger" additivity="false">
            <level value="all" />
            <appender-ref ref="stat_log" />
    </logger>
    <logger name="WgpStatServiceLogger" additivity="false">
    <level value="all" />
    <appender-ref ref="wgp_stat_service_log" />
    </logger>
    ```
    
   
  - 告警日志 logback.xml中定义告警日志
    ```
    <appender name="wgp_alarm_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>../logs/graysdk/alarm/alarm.log</file>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS}|%msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> 
        <fileNamePattern>../logs/graysdk/alarm/alarm-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
        <maxFileSize>100MB</maxFileSize> 
        <maxHistory>7</maxHistory>          <!-- log save days --> 
        <totalSizeCap>10GB</totalSizeCap>   <!-- total log space size -->
    </rollingPolicy>
    </appender>
    <logger name="WgpAlarmLogger" additivity="false">
    <level value="all" />
    <appender-ref ref="stat_log" />
    </logger>
    ```
    
    
 
- 日志说明 SDK默认会产生debug日志和run日志。
  
- SDK初始化成功 SDK初始化成功，表示已经从ETCD获取到了指定微服务名称的灰度配置，同时会在conf目录产生{serviceName}_grayrule.json的本地灰度规则备份文件。
  
 
