BOS Java SDK发布版本中增加了logback作为slf4j的实现,如工程中没有自己的实现可以直接用,如果工程中有其他的如log4j则可以替代。
如使用默认的logback,则需要配置logback.xml到classpath中。如果没有这个配置文件,日志级别默认为DEBUG。则会有过多的日志打印
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_HOME" value="../log"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] [%c:%L] %m%n</pattern>
</encoder>
</appender>
<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/bing.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/bing.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] [%c:%L] %m%n</pattern>
</encoder>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<logger name="com.bingz" level="DEBUG" >
<appender-ref ref="rollingFile"/>
<appender-ref ref="console"/>
</logger>
<logger name="org.quartz">
<appender-ref ref="INFO"/>
</logger>
<root level="info">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
配置说明:
property
定义属性,类似全局变量, 比如上面我们定义的LOG_HOME 日志写入路径文件路径, 下面的appender 可以直接引用
appender
追加器,描述如何写入到文件中(写在哪,格式,文件的切分)
ConsoleAppender--追加到控制台
RollingFileAppender--滚动追加到文件
encoder: 对日志进行格式化。
rollingPolicy:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名.TimeBasedRollingPolicy 是根据时间制定滚动策略,
fileNamePattern:文件输出格式
logger
控制器,描述如何选择追加器
注意:要是单独为某个类指定的时候,要修改类的全限定名
appender-ref: 引用前面定义的appender
level="error": 定义输出的日志级别, 低于此日志级别的日志不会输出
additivity="false": 这个稍微不太好理解, 下面我写个代码, 实操下.
日志级别
TRACE->DEBUG ->INFO -> WARN -> ERROR -> FATAL
从左到右, 由到高
root
根级别日志
自有日志模块:
若使用自己的日志实现模块,例如项目依赖于Maven,则可以类似下面的配置到pom.xml中来去除logback。
<?xml version="1.0" encoding="utf-8"?>
<dependency>
<groupId>com.baidubce</groupId>
<artifactId>bce-java-sdk</artifactId>
<version>${bce.sdk.version}</version>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
至此就可以解决log4j日志打印过多问题,以上都是作者开发工程中的解决办法,如有其他解决办法请评论留言