You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Gary Gregory (JIRA)" <ji...@apache.org> on 2015/10/26 19:09:28 UTC

[jira] [Comment Edited] (LOG4J2-1178) Support use-case for JDBC's DataSource.setLogWriter(PrintStream)

    [ https://issues.apache.org/jira/browse/LOG4J2-1178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14974697#comment-14974697 ] 

Gary Gregory edited comment on LOG4J2-1178 at 10/26/15 6:09 PM:
----------------------------------------------------------------

The PrintStream or PrintWriter is passed to the JDBC API implemented by the JDBC driver. Log4j does not need to know any more than that; and there is no point in it knowing more, the driver needs to cause Log4j to publish log events to this stream. The driver's setLogWriter(PrintStream|PrintWriter) can decide on the layout or just let the default kick in. The pseudo code could be:

getLoggerContext().getConfiguration().addAppender(PrintStreamAppender.createPrintStreamAppender(aPrintStream, myLayoutOrNone))
getLoggerContext().getConfiguration().reconfigure()?
// Or use the new builder API?

The PS/PW could end up going to a file, the console, a text pane, who knows, but that does not matter here. What matters is that the driver can find a way to publish its log events to this stream.






was (Author: garydgregory):
The PrintStream or PrintWriter is passed to the JDBC API implemented by the JDBC driver. Log4j does not need to know any more than that; and there is no point in it knowing more, the driver needs to cause Log4j to publish log events to this stream. The driver's setLogWriter(PrintStream|PrintWriter) can decide on the layout or just let the default kick in. The pseudo code could be:

getLoggerContext().getConfiguration().addAppender(PrintStreamAppender.createPrintStreamAppender(aPrintStream, myLayoutOrNone))
getLoggerContext().getConfiguration().reconfigure()?
// Or use the new builder API?

The PS/PW could end up going to a file, the console, a text pane, how knows, but that does not matter here. What matters is that the driver can find a way to publish its log events to this stream.





> 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: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org