[
https://issues.apache.org/jira/browse/LOG4J2-1178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14973500#comment-14973500
]
Gary Gregory commented on LOG4J2-1178:
--------------------------------------
One thing to keep in mind is that JDBC is an old API suffering from all sorts
of ills and oddness.
When an application calls DataSource.setLogWriter(PW), it is asking the driver
to log to that destination. JDBC knows nothing of logging frameworks.
My driver uses Log4j 2, so that's OK.
If a user drops the driver into a tool that knows nothing of Log4j and uses std
JDBC, it will call {{setLogWriter()}} and give it a {{PrintWriter}} for its own
console for example. The user would rightly expect logging to appear on this
PW. So how do I do that? In this case, I want the driver to tell Log4j that the
given PW should be an appender. This way, when the driver logs to Log4j, one of
the places logging will appear is the PW.
> Support use-case for JDBC's DataSource.setLogWriter(PrintStream)
> ----------------------------------------------------------------
>
> Key: LOG4J2-1178
> URL: https://issues.apache.org/jira/browse/LOG4J2-1178
> Project: Log4j 2
> Issue Type: Bug
> Components: Appenders
> Environment: Apache Maven 3.3.3
> (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T04:57:37-07:00)
> Maven home: C:\Java\apache-maven-3.3.3\bin\..
> Java version: 1.7.0_79, vendor: Oracle Corporation
> Java home: C:\Program Files\Java\jdk1.7.0_79\jre
> Default locale: en_US, platform encoding: Cp1252
> OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
> Reporter: Gary Gregory
>
> I am writing a JDBC driver. The JDBC Spec has a a method
> [DataSource.setLogWriter(PrintStream)|https://docs.oracle.com/javase/8/docs/api/javax/sql/CommonDataSource.html#setLogWriter-java.io.PrintWriter-]
> API drivers should implement.
> Users can drop our driver into any tool that talks JDBC or write their own
> apps. In am concerned about the 'drop the driver anywhere' scenario, like in
> an Eclipse based tool; that may or may not use Eclipse DTP. Or anything else.
> The
> [setLogWriter()|https://docs.oracle.com/javase/8/docs/api/javax/sql/CommonDataSource.html#setLogWriter-java.io.PrintWriter-]
> API can be called at any time, after Log4j has initialized itself for
> example.
> I do all my driver logging through Log4j. If a tool calls
> [setLogWriter()|https://docs.oracle.com/javase/8/docs/api/javax/sql/CommonDataSource.html#setLogWriter-java.io.PrintWriter-],
> I'd like the given PrintStream to become an Appender such that Log4j output
> appears there.
> The only way I see to do that is through pseudo-code like
> "getLoggerContext().getConfiguration().addAppender(PrintStreamAppender.createPrintStreamAppender(aPrintStream))"
> I think that would need to be followed by a full reconfigure.
> Can we use our new builder API to add to the current config and reconfigure?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]