华为云对象存储日志级别修改

由于华为云对象存储SDK的日志级别为INFO,在线上环境时打印大量日志,严重影响日志分析,所以准备将其日志级别修改为ERROR。

华为云官网给出以下两种方案(https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_2004.html

1.将OBS SDK包中的log4j2.xml文件放到classpath根目录;

2.调用Log4j2Configurator.setLogConfig直接指定log4j2.xml文件的路径。

日志级别

  • OFF: 关闭级别,如果设置为这个级别,日志打印功能将被关闭。
  • TRACE:跟踪级别,如果设置为这个级别,将打印所有日志信息。通常不建议使用。
  • DEBUG:调试级别,如果设置为这个级别,除了打印INFO级别以上的信息外,还将打印每次HTTP/HTTPS请求和响应的头信息,鉴权算法计算出的StringToSign信息等。
  • INFO:信息级别,如果设置为这个级别,除了打印WARN级别以上的信息外,还将打印HTTP/HTTPS请求的耗时时间,ObsClient接口的耗时时间等。
  • WARN:告警级别,如果设置为这个级别,除了打印ERROR级别以上的信息外,还将打印一些关键事件的信息,如重试请求超过最大次数等。
  • ERROR:错误级别,如果设置为这个级别,仅打印发生异常时的错误信息。

设置方式

以下代码分别为南向日志、北向日志和OBS客户端运行日志设置了不同的日志级别

<!-- north log -->
<Logger name="com.obs.services.AbstractClient" level="INFO" additivity="false">
      <AppenderRef ref="NorthInterfaceLogAppender" />
</Logger>
        
<!-- south log -->
<Logger name="com.obs.services.internal.RestStorageService" level="WARN" additivity="false">
       <AppenderRef ref="SouthInterfaceLogAppender" />
</Logger>

<!-- access log -->
<Logger name="com.obs.log.AccessLogger" level="ERROR" additivity="false">
        <AppenderRef ref="AccessLogAppender" />
</Logger>

但当我将配置文件放到classpath根目录之后,日志级别并未改变,且出现ERROR StatusLogger LogManager returned an instance of org.apache.logging.log4j.simple.SimpleLoggerContextFactory which does not implement org.apache.logging.log4j.core.impl.Log4jContextFactory. Unable to initialize Log4j错误。

解决方案

在resource下新建log4j2.component.properties,其内容如下

log4j2.loggerContextFactory=org.apache.logging.log4j.core.impl.Log4jContextFactory
log4j.configurationFile=log4j2.xml
© 版权声明
THE END
喜欢就支持以下吧
点赞7 分享