1. 程式人生 > >springboot中,Druid配置使用log4j2。

springboot中,Druid配置使用log4j2。

問題

springboot專案,使用了slf4j2,同時也使用了阿里的DruidDataSource,但是在專案啟動時出了問題:

log4j:WARN No appenders could be found for logger (com.alibaba.druid.pool.DruidDataSource).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

感覺是DruidDataSource預設去找了 log4j.properties 配置檔案。

本地專案配置

# logback
logging.config=classpath:log4j2.xml

#mysql
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource 
spring.datasource.url=jdbc:mysql://10.57.17.28:3306/mockcloud?useUnicode=true&useSSL=false&characterEncoding=utf8  
spring.datasource.username=root  
spring.datasource.password
= spring.datasource.driver-class-name=com.mysql.jdbc.Driver #連線池配置 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 spring.datasource.maxWait=60000 spring.datasource.timeBetweenEvictionRunsMillis=60000 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource
.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 spring.datasource.filters=stat,wall,log4j2 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

可以看出,在資料來源的配置中,通過spring.datasource.filters=stat,wall,log4j2配置了log4j2作為日誌的依賴。
但是遺憾的是,錯誤依然存在。

那是不是這裡的配置不生效呢?
在網上看了一些文章,有的說為Druid需要單獨配置configuration beanapplication.properties中的配置不能生效,於是新增:

import com.alibaba.druid.pool.DruidDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;
import java.sql.SQLException;

@Configuration
public class DruidDBConfig {

    private static final Logger logger = LoggerFactory.getLogger(DruidDBConfig.class);

    @Value("${spring.datasource.url}")
    private String dbUrl;

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;

    @Value("${spring.datasource.initialSize}")
    private int initialSize;

    @Value("${spring.datasource.minIdle}")
    private int minIdle;

    @Value("${spring.datasource.maxActive}")
    private int maxActive;

    @Value("${spring.datasource.maxWait}")
    private int maxWait;

    @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
    private int timeBetweenEvictionRunsMillis;

    @Value("${spring.datasource.minEvictableIdleTimeMillis}")
    private int minEvictableIdleTimeMillis;

    @Value("${spring.datasource.validationQuery}")
    private String validationQuery;

    @Value("${spring.datasource.testWhileIdle}")
    private boolean testWhileIdle;

    @Value("${spring.datasource.testOnBorrow}")
    private boolean testOnBorrow;

    @Value("${spring.datasource.testOnReturn}")
    private boolean testOnReturn;

    @Value("${spring.datasource.poolPreparedStatements}")
    private boolean poolPreparedStatements;

    @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")
    private int maxPoolPreparedStatementPerConnectionSize;

    @Value("${spring.datasource.filters}")
    private String filters;

    @Value("{spring.datasource.connectionProperties}")
    private String connectionProperties;

    @Bean     //宣告其為Bean例項
    @Primary  //在同樣的DataSource中,首先使用被標註的DataSource
    public DataSource dataSource(){
        DruidDataSource datasource = new DruidDataSource();

        datasource.setUrl(this.dbUrl);
        datasource.setUsername(username);
        datasource.setPassword(password);
        datasource.setDriverClassName(driverClassName);

        //configuration
        datasource.setInitialSize(initialSize);
        datasource.setMinIdle(minIdle);
        datasource.setMaxActive(maxActive);
        datasource.setMaxWait(maxWait);
        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        datasource.setValidationQuery(validationQuery);
        datasource.setTestWhileIdle(testWhileIdle);
        datasource.setTestOnBorrow(testOnBorrow);
        datasource.setTestOnReturn(testOnReturn);
        datasource.setPoolPreparedStatements(poolPreparedStatements);
        datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
        try {
            datasource.setFilters(filters);
        } catch (SQLException e) {
            logger.error("druid configuration initialization filter", e);
        }
        datasource.setConnectionProperties(connectionProperties);

        return datasource;
    }
}

很遺憾,問題還是沒有解決,依然報同樣的錯誤。

解決方法

求高手解答。

相關推薦

springbootDruid配置使用log4j2

問題 springboot專案,使用了slf4j2,同時也使用了阿里的DruidDataSource,但是在專案啟動時出了問題: log4j:WARN No appenders could be found for logger (com.alibaba

IIS7錯誤:不能在此路徑使用此配置如果在父級別上鎖定了該節便會出現這種情況鎖定是默認設置的(overrideModeDefault="Deny")......

命令 hand .exe ... 註意 net 解決 節點 windows IIS 7訪問的時候出現以下異常: 不能在此路徑中使用此配置節。如果在父級別上鎖定了該節,便會出現這種情況。鎖定是默認設置的(overrideModeDefault="Deny")...... 解決

配置錯誤:不能在此路徑使用此配置如果在父級別上鎖定了該節便會出現這種情況

因為 IIS 7 採用了更安全的 web.config 管理機制,預設情況下會鎖住配置項不允許更改。 執行命令列 %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers 。其中的 handl

IIS7錯誤:不能在此路徑使用此配置如果在父級別上鎖定了該節便會出現這種情況鎖定是預設設定的

IIS 7訪問的時候出現以下異常: 不能在此路徑中使用此配置節。如果在父級別上鎖定了該節,便會出現這種情況。鎖定是預設設定的(overrideModeDefault="Deny")...... 解決方案: 因為 IIS 7 採用了更安全的 web.config 管理機制

SpringBoot多資料來源 配置mybatis 駝峰命名不管用帶下劃線欄位返回null值

在springboot中 開啟是自動轉換,但是,這個配置根本沒有生效, 當查出來的資料時,只要欄位名中有 下劃線的欄位, 就會出現 null 在者我的工程是多資料來源工程,這是導致這個配置沒有生效的原因,因為他不知道為哪個資料來源開啟駝峰命名 所以我們需要在配置多資料來源的檔案

SpringBoot 的aop配置完成日誌記錄功能

第一步:在pom.xml下新增依賴 因為springboot已經新增過日誌記錄功能的依賴 <!-- 核心模組,包括自動配置支援、日誌支援 --> <dependency> <groupId>org.s

SpringBoot項目獲取配置文件信息

單元 alt extern .info bsp wire info mage prop 1.在配置文件中設置信息,格式如下 wechat: mpAppId: wxdf2b09f280e6e6e2 mpAppSecret: f924b2e9f140ac98f9cb5

SpringBoot的常用配置

comm highlight tar -type cati pid 添加 maven項目 http請求 一 . 關於在application.properties文件中的一些常見配置     1.server.port=8888 :表示配置端口     2.server

centos內核優化適合用於優化WEB服務器等TCP/IP連接多的服務器

內核優化 centos 優化 這個參數表示操作系統允許TIME_WAIT套接字數量的最大值,如果超過這個數字,TIME_WAIT套接字將立刻被清除並打印警告信息。默認180000,過多TIME_WAIT套接字會使Web服務器變慢。net.ipv4.tcp_max_tw_buckets = 1000

在Springboot2.0項目使用Druid配置多數據源

clas sin word npr PE ng- 多個 pap final 在Springboot出現之前配置數據源以及相關的事物,緩存等內容一直是個繁瑣的工作,但是Springboot出現後這些基本都可以靠默認配置搞定,就變得很輕松了。這就是現在推崇模板>配置的原因

springbootgenerator相關配置檔案

generator.properties # jdbc jdbc.driverClass = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=

如何解讀springboot 約定大於配置、JPA是什麼、咋用

1、大家都知道springboot 的核心:約定大於配置,什麼意思呢? 那麼怎麼每個約定大於配置呢?摘自百科一段: 》在微服務體系中,簡單說,在springboot 中,約定大於配置這句話可以從以下來理解: 1、開發人員僅需規定應用中不符約定的部分; 2、在沒有規定配置

SpringBoot學習1.6-配置log4j2及進行靜態方法封裝

環境: jdk1.8;spring boot2.0.2;Maven3.3 摘要說明: spring boot2預設使用的是Logback;且spring boot2開始不支援log4j只支援log4j2;Logback作為新開發的框架既然被spring boot當成預設

HTTP500.19 iis7、8 不能在此路徑使用此配置如果在父級別上鎖定了該節,便會出現這種情況

不能在此路徑中使用此配置節。如果在父級別上鎖定了該節,便會出現這種情況。鎖定 在全新安裝的IIS7下搭建網站,訪問頁面時出現錯誤資訊如下: 配置錯誤 不能在此路徑中使用此配置節。如果在父級別上鎖定了該節,便會出現這種情況。鎖定是預設設定的(overrideModeDefa

springbootbean形式配置mybatis的分頁外掛

mybatis的分頁外掛在開發中往往必不可少,使用起來也非常簡單。以往我們的配置都是在xml中進行的,springboot推薦使用bean的形式進行配置。所以,今天就來看看使用java bean的形式配置mybatis的分頁外掛。 1、新增依賴 首先引入必要的依賴:分頁外掛的依賴 <

SpringBoot靜態資源配置

在Springboot中預設的靜態資源路徑有:classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,從這裡可以看出這裡的靜態資源路徑都是在classpath

生成十個0~100之間的隨機數放到陣列然後排序輸出(random版) [必做題]

import java.util.Arrays; import java.util.Random; import java.util.Scanner; public class randos { public static void main(String[] args) { Sc

生成十個0~100之間的隨機數放到陣列然後排序輸出(知識點:Math類取整,獲得隨機數等) [必做題]

import java.util.Arrays; import java.util.Scanner; public class 隨機陣列排序 { public static void main(String[] args) { Scanner s = new Scanner(Syst

HTTP500.19 iis7、8 不能在此路徑使用此配置如果在父級別上鎖定了該節,便會出現這種情況

不能在此路徑中使用此配置節。如果在父級別上鎖定了該節,便會出現這種情況。鎖定 在全新安裝的IIS7下搭建網站,訪問頁面時出現錯誤資訊如下: 配置錯誤 不能在此路徑中使用此配置節。如果在父級別上鎖定了該節,便會出現這種情況。鎖定是預設設定的(overrideModeDefa

SpringBootAOP的配置

AOP目的: 面向切面程式設計(aspect-oriented programming,AOP)主要實現的目的是針對業務處理過程中的切面進行提取,諸如日誌、事務管理和安全這樣的系統服務,從而使得業務邏輯各部分之間的耦合度降低,提高程式的可重用性,同時提高了開發