Hi David,

I've looked at the source code for com.mchange.v2.log.MLog and could not find any direct support for SLF4J. I presume you have installed log4j-over-slf4j on your class path. Right?

Coming back to your question, the link [1] mentioned in the warning output by SLF4J provides an explanation for the problem.

Here is the gist of it:

  The only way to obtain output from the listed loggers, is to
  isolate the components invoking these loggers and to exclude
  them from the default configuration. Both logback and log4j allow
  multi-step configuration. It follows that the problematic components
  should be configured in a second step separate from default
  configuration.

Thus, you remove the part that configures DBAppender from the default/initial configuration file and place it in another file, say logback-secondary.xml. You then load this secondary configuration file as follows:

 LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
 try {
   JoranConfigurator configurator = new JoranConfigurator();
   configurator.setContext(lc);
   // don't reset the existing configuration
   // lc.reset();
   configurator.doConfigure(path to logback-secondary.xml);
 } catch (JoranException je) {
   // StatusPrinter will handle this
 }
 StatusPrinter.printInCaseOfErrorsOrWarnings(lc);

See also [2] on invoking JoranConfigurator directly.

I hope this helps,

[1] http://www.slf4j.org/codes.html#substituteLogger
[2] http://logback.qos.ch/manual/configuration.html#joranDirectly

--
http://twitter.com/ceki

On 06/10/2011 11:16 PM, David Felsenthal wrote:
I have read the FAQ and looked on the net and banged my head into this.
My configuration file is:

<configuration scan="true" debug="true">

        <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
                <connectionSource 
class="ch.qos.logback.core.db.DataSourceConnectionSource">
                        <dataSource 
class="com.mchange.v2.c3p0.ComboPooledDataSource">
                                <driverClass>org.postgresql.Driver</driverClass>
                                
<jdbcUrl>jdbc:postgresql://dfelsenthal-pc2/testdb_david</jdbcUrl>
                                <user>user</user>
                                <password>password</password>
                        </dataSource>
                </connectionSource>
        </appender>


        <logger name="com.mchange.v2" level="OFF" />
        <logger name="org.hibernate" level="WARN" />

        <root level="INFO">
                <appender-ref ref="DB" />
        </root>
</configuration>

and I am getting the usual

SLF4J: The following loggers will not work becasue they were created
SLF4J: during the default configuration phase of the underlying logging system.
SLF4J: See also http://www.slf4j.org/codes.html#substituteLogger
SLF4J: com.mchange.v2.log.MLog
.....

Can anyone suggest how to set up the multi-step for the c3p0 classes?
I can't quite figure it out.

Thanks in advance,
David



_______________________________________________
slf4j-user mailing list
[email protected]
http://qos.ch/mailman/listinfo/slf4j-user

Reply via email to