重新登录自定义DB Appender超时

时间:2018-08-29 08:28:38

标签: java sql-server osgi logback

在我的应用程序中,有一个logback实现,利用这种非常简单的xml配置:

#logback-mw.xml
<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="false">

    <appender name="DB"
        class="com.sample.osgi.core.MyDBAppender">
        <connectionSource
            class="ch.qos.logback.core.db.DriverManagerConnectionSource">
            <driverClass>com.microsoft.sqlserver.jdbc.SQLServerDriver
            </driverClass>
            <url>jdbc:sqlserver://mydbname:1401;databaseName=MWLOG;</url>
            <user>Andrea</user>
            <password>1234</password>
            <sqlDialect class="ch.qos.logback.core.db.dialect.MsSQLDialect" />
        </connectionSource>
        <insertHeaders>true</insertHeaders>
    </appender>


    <root level="DEBUG">
        <appender-ref ref="DB" />
    </root>

</configuration>

如您所见,我正在使用MS sql服务器数据库实例(2017版)。

这是我初始化记录器的代码:

private void initMWLogger() {

        // Set up mwLogger using logback-mw.xml.
        try {
            JoranConfigurator jc = new JoranConfigurator();
            LoggerContext loggerCtx = new LoggerContext();
            jc.setContext(loggerCtx);
            loggerCtx.reset();

            InputStream configStream = MiddlewareConnectorService.class.getResourceAsStream(Constants.LOGGER_XML);

     //EXECUTION ON BELOW LINE IS HANGING FOR 10 MINUTES!!!!
jc.doConfigure(configStream); 

            mwLogger = loggerCtx.getLogger(MiddlewareConnectorService.class);
        } catch (JoranException e) {
            mwLogger = null;
        }
    }

在某些环境中,数据库连接的给定dns无法访问,因此在启动过程中我的应用程序挂起了10分钟。 是否可以为此设置超时?我不希望我的应用程序为此挂起...在最坏的情况下,我只希望数据库日志记录。被禁用。对于记录,我已经尝试使用this Ms sql server documentation上提到的* timeout查询参数。 另外,有人可以建议默认10分钟超时来自何处吗?或如何解决此问题?

0 个答案:

没有答案