2017-04-21 124 views
0

我正在編寫創建DBAppender以使用我的連接池的數據源的源代碼。現在,當我啓動DBAppender時,出現錯誤「如果JDBC驅動程序不支持沒有特定SQL方言的getGeneratedKeys方法,則DBAppender無法運行。所以我想添加sqlDialect到我的實現,但無法找到一種方法來做到這一點。將sqldialect設置爲logback db appender programaticaly

用於添加附加器來記錄程序的代碼如下所示:

LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); 

DataSourceConnectionSource source = new DataSourceConnectionSource(); 

source.setDataSource(Database.getInstance().getDatasource()); 

DBAppender dbAppender = new DBAppender(); 
dbAppender.setName("db"); 
dbAppender.setConnectionSource(source); 
dbAppender.setContext(lc);  
dbAppender.start(); 

Logger logger = (Logger) LoggerFactory.getLogger(Loggerutils.class); 
logger.addAppender(dbAppender); 
logger.setLevel(Level.DEBUG); 

當我檢查的另一個項目,使用的logback我在xml配置使用<sqlDialect class="ch.qos.logback.core.db.dialect.MsSQLDialect" />

有沒有辦法在我的appender的實現中添加sqlDialect?

回答

1

您應該在設置數據源後開始連接源。

source.setDataSource(Database.getInstance().getDatasource()); 
    source.start() 

這將調用discoverConnectionProperties()方法,其中,方言由數據源的驅動器來確定。

source