AI智能
改变未来

druid和log4j2比较完美的配置


一.druid

1.1在pom中引入依赖

<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency>

1.2在项目的application.yml里配置druid

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=falseusername: rootpassword: root# 配置初始化大小、最小、最大initial-size: 20min-idle: 1max-active: 50#配置获取连接等待超时的时间max-wait: 60000#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒time-between-eviction-runs-millis: 60000#配置一个连接在池中最小生存的时间,单位是毫秒min-evictable-idle-time-millis: 300000#测试连接validation-query: SELECT \'x\'#申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性test-while-idle: true#获取连接时执行检测,建议关闭,影响性能test-on-borrow: false#归还连接时执行检测,建议关闭,影响性能test-on-return: false#是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭pool-prepared-statements: false#开启poolPreparedStatements后生效max-pool-prepared-statement-per-connection-size: 20#配置扩展插件,常用的插件有=>stat:监控统计  log4j:日志  wall:防御sql注入filters: stat,wall,log4j2# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# Druid WebStatFilter配置web-stat-filter:enabled: trueurl-pattern: /*exclusions: \'*.gif,*.png,*.jpg,*.html,*.js,*.css,*.ico,/druid/*\'# Druid StatViewServlet配置stat-view-servlet:enabled: trueurl-pattern: /druid/*reset-enable: truelogin-username: adminlogin-password: admin# 配置日志输出filter:slf4j:enabled: truestatement-create-after-log-enabled: falsestatement-close-after-log-enabled: falseresult-set-open-after-log-enabled: falselogging:config: classpath:log4j2.xml
二.log4j2

2.1在pom里引入依赖,并去除spring boot自带的日志工具

....<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><!--移除自带日志管理--><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><!--log4j2日志--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency>

2.2 log4j2.xml

<?xml version=\"1.0\" encoding=\"UTF-8\"?><!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出--><!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数--><configuration status=\"WARN\" monitorInterval=\"1800\"><Properties><!-- ==============================================公共配置============================================== --><!-- 设置日志文件的目录名称 --><property name=\"logFileName\">IotEmLog</property><!-- 日志默认存放的位置,可以设置为项目根路径下,也可指定绝对路径 --><!-- 存放路径一:通用路径,window平台 --><property name=\"basePath\">f:/Java/project/logs/${logFileName}</property><!-- 存放路径二:web工程专用,java项目没有这个变量,需要删掉,否则会报异常,这里把日志放在web项目的根目录下 --><!-- <property name=\"basePath\">${web:rootDir}/${logFileName}</property> --><!-- 存放路径三:web工程专用,java项目没有这个变量,需要删掉,否则会报异常,这里把日志放在tocmat的logs目录下 --><!--<property name=\"basePath\">${sys:catalina.home}/logs/${logFileName}</property>--><!-- 控制台默认输出格式,\"%-5level\":日志级别,\"%l\":输出完整的错误位置,是小写的L,因为有行号显示,所以影响日志输出的性能 --><property name=\"console_log_pattern\">[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level]: %l - %m%n</property><!-- 日志文件默认输出格式,不带行号输出(行号显示会影响日志输出性能);%C:大写,类名;%M:方法名;%m:错误信息;%n:换行 --><!-- <property name=\"log_pattern\">%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %C.%M - %m%n</property> --><!-- 日志文件默认输出格式,另类带行号输出(对日志输出性能未知);%C:大写,类名;%M:方法名;%L:行号;%m:错误信息;%n:换行 --><property name=\"log_pattern\">[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level]: %C.%M[%L line] - %m%n</property><!-- 日志默认切割的最小单位 --><property name=\"every_file_size\">20MB</property><!-- 日志默认输出级别 --><property name=\"output_log_level\">DEBUG</property><!-- ===========================================所有级别日志配置=========================================== --><!-- 日志默认存放路径(所有级别日志) --><property name=\"rolling_fileName\">${basePath}/all.log</property><!-- 日志默认压缩路径,将超过指定文件大小的日志,自动存入按\"年月\"建立的文件夹下面并进行压缩,作为存档 --><property name=\"rolling_filePattern\">${basePath}/%d{yyyy-MM}/all-%d{yyyy-MM-dd-HH}-%i.log.gz</property><!-- 日志默认同类型日志,同一文件夹下可以存放的数量,不设置此属性则默认为7个,filePattern最后要带%i才会生效 --><property name=\"rolling_max\">500</property><!-- 日志默认同类型日志,多久生成一个新的日志文件,这个配置需要和filePattern结合使用;如果设置为1,filePattern是%d{yyyy-MM-dd}到天的格式,则间隔一天生成一个文件如果设置为12,filePattern是%d{yyyy-MM-dd-HH}到小时的格式,则间隔12小时生成一个文件 --><property name=\"rolling_timeInterval\">12</property><!-- 日志默认同类型日志,是否对封存时间进行调制,若为true,则封存时间将以0点为边界进行调整,如:现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am --><property name=\"rolling_timeModulate\">true</property><!-- ============================================Info级别日志============================================ --><!-- Info日志默认存放路径(Info级别日志) --><property name=\"info_fileName\">${basePath}/info.log</property><!-- Info日志默认压缩路径,将超过指定文件大小的日志,自动存入按\"年月\"建立的文件夹下面并进行压缩,作为存档 --><property name=\"info_filePattern\">${basePath}/%d{yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz</property><!-- Info日志默认同一文件夹下可以存放的数量,不设置此属性则默认为7个 --><property name=\"info_max\">100</property><!-- 日志默认同类型日志,多久生成一个新的日志文件,这个配置需要和filePattern结合使用;如果设置为1,filePattern是%d{yyyy-MM-dd}到天的格式,则间隔一天生成一个文件如果设置为12,filePattern是%d{yyyy-MM-dd-HH}到小时的格式,则间隔12小时生成一个文件 --><property name=\"info_timeInterval\">1</property><!-- 日志默认同类型日志,是否对封存时间进行调制,若为true,则封存时间将以0点为边界进行调整,如:现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am --><property name=\"info_timeModulate\">true</property><!-- ============================================Warn级别日志============================================ --><!-- Warn日志默认存放路径(Warn级别日志) --><property name=\"warn_fileName\">${basePath}/warn.log</property><!-- Warn日志默认压缩路径,将超过指定文件大小的日志,自动存入按\"年月\"建立的文件夹下面并进行压缩,作为存档 --><property name=\"warn_filePattern\">${basePath}/%d{yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz</property><!-- Warn日志默认同一文件夹下可以存放的数量,不设置此属性则默认为7个 --><property name=\"warn_max\">100</property><!-- 日志默认同类型日志,多久生成一个新的日志文件,这个配置需要和filePattern结合使用;如果设置为1,filePattern是%d{yyyy-MM-dd}到天的格式,则间隔一天生成一个文件如果设置为12,filePattern是%d{yyyy-MM-dd-HH}到小时的格式,则间隔12小时生成一个文件 --><property name=\"warn_timeInterval\">1</property><!-- 日志默认同类型日志,是否对封存时间进行调制,若为true,则封存时间将以0点为边界进行调整,如:现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am --><property name=\"warn_timeModulate\">true</property><!-- ============================================Error级别日志============================================ --><!-- Error日志默认存放路径(Error级别日志) --><property name=\"error_fileName\">${basePath}/error.log</property><!-- Error日志默认压缩路径,将超过指定文件大小的日志,自动存入按\"年月\"建立的文件夹下面并进行压缩,作为存档 --><property name=\"error_filePattern\">${basePath}/%d{yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz</property><!-- Error日志默认同一文件夹下可以存放的数量,不设置此属性则默认为7个 --><property name=\"error_max\">100</property><!-- 日志默认同类型日志,多久生成一个新的日志文件,这个配置需要和filePattern结合使用;如果设置为1,filePattern是%d{yyyy-MM-dd}到天的格式,则间隔一天生成一个文件如果设置为12,filePattern是%d{yyyy-MM-dd-HH}到小时的格式,则间隔12小时生成一个文件 --><property name=\"error_timeInterval\">1</property><!-- 日志默认同类型日志,是否对封存时间进行调制,若为true,则封存时间将以0点为边界进行调整,如:现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am --><property name=\"error_timeModulate\">true</property><!-- ============================================控制台显示控制============================================ --><!-- 控制台显示的日志最低级别 --><property name=\"console_print_level\">INFO</property></Properties><!--定义appender --><appenders><!-- =======================================用来定义输出到控制台的配置======================================= --><Console name=\"Console\" target=\"SYSTEM_OUT\"><!-- 设置控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level=\"${console_print_level}\" onMatch=\"ACCEPT\" onMismatch=\"DENY\"/><!-- 设置输出格式,不设置默认为:%m%n --><PatternLayout pattern=\"${console_log_pattern}\"/></Console><!-- ================================打印root中指定的level级别以上的日志到文件================================ --><RollingFile name=\"RollingFile\" fileName=\"${rolling_fileName}\" filePattern=\"${rolling_filePattern}\"><PatternLayout pattern=\"${log_pattern}\"/><Policies><TimeBasedTriggeringPolicy interval=\"${rolling_timeInterval}\" modulate=\"${warn_timeModulate}\"/><SizeBasedTriggeringPolicy size=\"${every_file_size}\"/></Policies><!-- 设置同类型日志,同一文件夹下可以存放的数量,如果不设置此属性则默认存放7个文件 --><DefaultRolloverStrategy max=\"${rolling_max}\" /></RollingFile><!-- =======================================打印INFO级别的日志到文件======================================= --><RollingFile name=\"InfoFile\" fileName=\"${info_fileName}\" filePattern=\"${info_filePattern}\"><PatternLayout pattern=\"${log_pattern}\"/><Policies><TimeBasedTriggeringPolicy interval=\"${info_timeInterval}\" modulate=\"${info_timeModulate}\"/><SizeBasedTriggeringPolicy size=\"${every_file_size}\"/></Policies><DefaultRolloverStrategy max=\"${info_max}\" /><Filters><ThresholdFilter level=\"WARN\" onMatch=\"DENY\" onMismatch=\"NEUTRAL\"/><ThresholdFilter level=\"INFO\" onMatch=\"ACCEPT\" onMismatch=\"DENY\"/></Filters></RollingFile><!-- =======================================打印WARN级别的日志到文件======================================= --><RollingFile name=\"WarnFile\" fileName=\"${warn_fileName}\" filePattern=\"${warn_filePattern}\"><PatternLayout pattern=\"${log_pattern}\"/><Policies><TimeBasedTriggeringPolicy interval=\"${warn_timeInterval}\" modulate=\"${warn_timeModulate}\"/><SizeBasedTriggeringPolicy size=\"${every_file_size}\"/></Policies><DefaultRolloverStrategy max=\"${warn_max}\" /><Filters><ThresholdFilter level=\"ERROR\" onMatch=\"DENY\" onMismatch=\"NEUTRAL\"/><ThresholdFilter level=\"WARN\" onMatch=\"ACCEPT\" onMismatch=\"DENY\"/></Filters></RollingFile><!-- =======================================打印ERROR级别的日志到文件======================================= --><RollingFile name=\"ErrorFile\" fileName=\"${error_fileName}\" filePattern=\"${error_filePattern}\"><PatternLayout pattern=\"${log_pattern}\"/><Policies><TimeBasedTriggeringPolicy interval=\"${error_timeInterval}\" modulate=\"${error_timeModulate}\"/><SizeBasedTriggeringPolicy size=\"${every_file_size}\"/></Policies><DefaultRolloverStrategy max=\"${error_max}\" /><Filters><ThresholdFilter level=\"FATAL\" onMatch=\"DENY\" onMismatch=\"NEUTRAL\"/><ThresholdFilter level=\"ERROR\" onMatch=\"ACCEPT\" onMismatch=\"DENY\"/></Filters></RollingFile><!--druid的日志记录追加器--><RollingFile name=\"druidSqlRollingFile\" fileName=\"${basePath}/druid-sql.log\"filePattern=\"${basePath}/%d{yyyy-MM}/druid-sql-%d{yyyy-MM-dd}-%i.log.gz\"><PatternLayout pattern=\"${log_pattern}\"/><Policies><SizeBasedTriggeringPolicy size=\"100 MB\"/><TimeBasedTriggeringPolicy/></Policies></RollingFile></appenders><!--定义logger,只有定义了logger并引入的appender,appender才会生效--><loggers><!-- 设置打印sql语句配置开始,以下两者配合使用,可以优化日志的输出信息,减少一些不必要信息的输出 --><!-- 设置java.sql包下的日志只打印DEBUG及以上级别的日志,此设置可以支持sql语句的日志打印 --><logger name=\"java.sql\" level=\"DEBUG\" additivity=\"false\"><appender-ref ref=\"Console\"/></logger><!-- 设置org.mybatis.spring包下的日志只打印WARN及以上级别的日志 --><logger name=\"org.mybatis.spring\" level=\"WARN\" additivity=\"false\"><appender-ref ref=\"Console\"/></logger><!-- 设置org.mybatis.spring包下的日志只打印WARN及以上级别的日志 --><logger name=\"org.springframework\" level=\"WARN\" additivity=\"false\"><appender-ref ref=\"Console\"/></logger><!-- 设置org.mybatis.spring包下的日志只打印WARN及以上级别的日志 --><logger name=\"com.qfx.workflow.service\" level=\"WARN\" additivity=\"false\"><appender-ref ref=\"Console\"/></logger><!-- 设置打印sql语句配置结束 --><!--记录druid-sql的记录--><logger name=\"druid.sql.Statement\" level=\"debug\" additivity=\"false\"><appender-ref ref=\"druidSqlRollingFile\"/></logger><logger name=\"druid.sql.Statement\" level=\"debug\" additivity=\"false\"><appender-ref ref=\"druidSqlRollingFile\"/></logger><!--建立一个默认的root的logger--><root level=\"${output_log_level}\"><appender-ref ref=\"RollingFile\"/><appender-ref ref=\"Console\"/><appender-ref ref=\"InfoFile\"/><appender-ref ref=\"WarnFile\"/><appender-ref ref=\"ErrorFile\"/></root></loggers></configuration>
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » druid和log4j2比较完美的配置