当前位置: 首页 > 工具软件 > Bing API SDK > 使用案例 >

(完美解决)java 集成解决引入百度智能云bos包,出现log4j打印日志过多问题【com.baidubce:api-explorer-sdk】

辛成周
2023-12-01

SDK日志

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日志打印过多问题,以上都是作者开发工程中的解决办法,如有其他解决办法请评论留言

 类似资料: