日志管理

openGauss JDBC驱动程序支持使用日志记录来帮助解决在应用程序中使用openGauss JDBC驱动程序时的问题。openGauss JDBC支持如下三种日志管理方式:

  1. 使用连接属性指定临时日志文件。
  2. 对接应用程序使用的SLF4J日志框架。
  3. 对接应用程序使用的JdkLogger日志框架。

SLF4J和JdkLogger是业界Java应用程序日志管理的主流框架,描述应用程序如何使用这些框架超出了本文范围,用户请参考对应的官方文档(SLF4J:http://www.slf4j.org/manual.html,JdkLogger:https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html)。

方式一:使用连接属性。

url上配置loggerLevelloggerFile

此种方式,配置简单,适用于调试驱动,但不支持日志级别、文件大小、文件数量管控,若日志不及时手动处理,会占满磁盘,因此,除调试驱动,不建议用此方式管理日志。

示例:

  1. public static Connection GetConnection(String username, String passwd){
  2. String sourceURL = "jdbc:postgresql://10.10.0.13:8000/postgres?loggerLevel=DEBUG&loggerFile=gsjdbc.log";
  3. Connection conn = null;
  4. try{
  5. //创建连接
  6. conn = DriverManager.getConnection(sourceURL,username,passwd);
  7. System.out.println("Connection succeed!");
  8. }catch (Exception e){
  9. e.printStackTrace();
  10. return null;
  11. }
  12. return conn;
  13. }

方式二:对接应用程序的SLF4J日志框架。

在建立连接时,url配置logger=Slf4JLogger。

可采用Log4j或Log4j2来实现SLF4J。当采用Log4j实现SLF4J,需要添加如下jar包:log4j-*.jar、slf4j-api-*.jar、slf4j-log4*-*.jar,(*区分版本),和配置文件:log4j.properties。若采用Log4j2实现SLF4J,需要添加如下jar包:log4j-api-*.jar、log4j-core-*.jar、log4j-slf4j18-impl-*.jar、slf4j-api-*-alpha1.jar(*区分版本),和配置文件:log4j2.xml。

此方式支持日志管控。SLF4J可通过文件中的相关配置实现强大的日志管控功能,建议使用此方式进行日志管理。注意:此方式依赖slf4j的通用API接口,如org.slf4j.LoggerFactory.getLogger(String name)、org.slf4j.Logger.debug(String var1)、org.slf4j.Logger.info(String var1)、org.slf4j.Logger.warn(String warn)、org.slf4j.Logger.warn(String warn)等,若以上接口发生变更,日志将无法打印。

示例:

  1. public static Connection GetConnection(String username, String passwd){
  2. String sourceURL = "jdbc:postgresql://10.10.0.13:8000/postgres?logger=Slf4JLogger";
  3. Connection conn = null;
  4. try{
  5. //创建连接
  6. conn = DriverManager.getConnection(sourceURL,username,passwd);
  7. System.out.println("Connection succeed!");
  8. }catch (Exception e){
  9. e.printStackTrace();
  10. return null;
  11. }
  12. return conn;
  13. }

log4j.properties示例:

  1. log4j.logger.org.postgresql=ALL, log_gsjdbc
  2. # 默认文件输出配置
  3. log4j.appender.log_gsjdbc=org.apache.log4j.RollingFileAppender
  4. log4j.appender.log_gsjdbc.Append=true
  5. log4j.appender.log_gsjdbc.File=gsjdbc.log
  6. log4j.appender.log_gsjdbc.Threshold=TRACE
  7. log4j.appender.log_gsjdbc.MaxFileSize=10MB
  8. log4j.appender.log_gsjdbc.MaxBackupIndex=5
  9. log4j.appender.log_gsjdbc.layout=org.apache.log4j.PatternLayout
  10. log4j.appender.log_gsjdbc.layout.ConversionPattern=%d %p %t %c - %m%n
  11. log4j.appender.log_gsjdbc.File.Encoding = UTF-8

log4j2.xml示例:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration status="OFF">
  3. <appenders>
  4. <Console name="Console" target="SYSTEM_OUT">
  5. <PatternLayout pattern="%d %p %t %c - %m%n"/>
  6. </Console>
  7. <File name="FileTest" fileName="test.log">
  8. <PatternLayout pattern="%d %p %t %c - %m%n"/>
  9. </File>
  10. <!--JDBC Driver日志文件输出配置,支持日志回卷,设定日志大小超过10MB时,创建新的文件,新文件的命名格式为:年-月-日-文件编号-->
  11. <RollingFile name="RollingFileJdbc" fileName="gsjdbc.log" filePattern="%d{yyyy-MM-dd}-%i.log">
  12. <PatternLayout pattern="%d %p %t %c - %m%n"/>
  13. <Policies>
  14. <SizeBasedTriggeringPolicy size="10 MB"/>
  15. </Policies>
  16. </RollingFile>
  17. </appenders>
  18. <loggers>
  19. <root level="all">
  20. <appender-ref ref="Console"/>
  21. <appender-ref ref="FileTest"/>
  22. </root>
  23. <!--指定JDBC Driver日志,级别为:all,可查看所有日志,输出到gsjdbc.log文件中-->
  24. <logger name="org.postgresql" level="all" additivity="false">
  25. <appender-ref ref="RollingFileJdbc"/>
  26. </logger>
  27. </loggers>
  28. </configuration>

方式三:对接应用程序使用的JdkLogger日志框架。

默认的Java日志记录框架将其配置存储在名为logging.properties的文件中。Java会在Java安装目录的文件夹中安装全局配置文件。logging.properties文件也可以创建并与单个项目一起存储。

logging.properties配置示例:

  1. # 指定处理程序为文件。
  2. handlers= java.util.logging.FileHandler
  3. # 指定默认全局日志级别
  4. .level= ALL
  5. # 指定日志输出管控标准
  6. java.util.logging.FileHandler.level=ALL
  7. java.util.logging.FileHandler.pattern = gsjdbc.log
  8. java.util.logging.FileHandler.limit = 500000
  9. java.util.logging.FileHandler.count = 30
  10. java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
  11. java.util.logging.FileHandler.append=false