Yes, the config creates the loggers, but something has to tell Log4j to
call DriverManager.setLogWriter().

Gary


On Tue, Sep 2, 2014 at 10:55 PM, Matt Sicker <[email protected]> wrote:

> Wouldn't the XML just configure the Logger itself? The streams are all
> adapters.
>
>
> On 2 September 2014 21:42, Gary Gregory <[email protected]> wrote:
>
>> On Tue, Sep 2, 2014 at 10:37 PM, Matt Sicker <[email protected]> wrote:
>>
>>> DriverManager.setLogWriter(LoggerStreams.forLogger(DriverManager.class).atLevel(Level.DEBUG));
>>> or something like that
>>>
>>> Then you'd just configure the "java.sql.DriverManager" logger.
>>>
>>
>> Yes, but what in the XML config triggers this code?
>>
>> Gary
>>
>>
>>>
>>>
>>> On 2 September 2014 21:30, Gary Gregory <[email protected]> wrote:
>>>
>>>> Let's _also_ look at the JDBC use cases from a configuration POV.
>>>>
>>>> What should my XML config look like to say:
>>>>
>>>> (1) Redirect all JDBC logging to DEBUG (or any level).
>>>> At the low level, that means:
>>>>
>>>> java.sql.DriverManager.
>>>> setLogWriter(new LoggerPrintWriter((*ExtendedLogger*)
>>>> LogManager.getLogger(), Level.DEBUG));
>>>>
>>>> (2) Redirect JDBC logging for a given JDBC appender to DEBUG (or any
>>>> level):
>>>> java.sql.CommonDataSource.setLogWriter(new LoggerPrintWriter((
>>>> *ExtendedLogger*) LogManager.getLogger(), Level.DEBUG));
>>>>
>>>> ?
>>>>
>>>> Gary
>>>>
>>>>
>>>> On Tue, Sep 2, 2014 at 9:36 PM, Matt Sicker <[email protected]> wrote:
>>>>
>>>>> We could make a LogManager-style class that's only used for streams.
>>>>> The LoggerStreams class looks like a good candidate, but due to the lack 
>>>>> of
>>>>> javadocs anywhere, I'm not sure what anything does anymore! Well, anything
>>>>> that isn't an override of all the java.io methods.
>>>>>
>>>>> Is it required that all Log4j providers use ExtendedLogger instead of
>>>>> just Logger? Because if it isn't, then that limits this a bit. If it is
>>>>> required, then that makes things easier. I would like a way to do 
>>>>> something
>>>>> like:
>>>>>
>>>>> PrintWriter pw =
>>>>> LoggerStreams.forLogger("com.foo.Bar").atLevel(Level.INFO).marked(FOO).buffered(4096).build();
>>>>>
>>>>> (Names aren't final at all). A sort of fluent builder would be much
>>>>> nicer than the dozens of constructors everywhere. I'm sure you know what I
>>>>> think about methods and constructors that take more than a few parameters.
>>>>> ;)
>>>>>
>>>>>
>>>>> On 2 September 2014 19:46, Gary Gregory <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Matt and all:
>>>>>>
>>>>>> Please review *log4j-streams *in master.
>>>>>>
>>>>>> The current nasty is this the required type cast to *ExtendedLogger*:
>>>>>>
>>>>>> java.sql.DriverManager.setLogWriter(new LoggerPrintWriter((
>>>>>> *ExtendedLogger*) LogManager.getLogger(), Level.DEBUG));
>>>>>>
>>>>>> Internally, *LogManager.getLogger()* uses an *ExtendedLogger* but
>>>>>> upcasts it to a plain *Logger*, for no good technical reason (see
>>>>>> below).
>>>>>>
>>>>>> Specifically:
>>>>>>
>>>>>>     public static Logger getLogger(final String name) {
>>>>>>         final String actualName = name != null ? name :
>>>>>> getClassName(2);
>>>>>>         return factory.getContext(LogManager.class.getName(), null,
>>>>>> null, false).getLogger(actualName);
>>>>>>     }
>>>>>>
>>>>>> Where *getLogger() *is:
>>>>>>
>>>>>> org.apache.logging.log4j.spi.LoggerContext.getLogger(String)
>>>>>>
>>>>>> The only reason I've heard on the ML to upcast from *ExtendedLogger*
>>>>>> to *Logger* is to hide the extra method from users. This now seems
>>>>>> like jumping through hoops for not much effect.
>>>>>>
>>>>>> We cannot downcast the public API without breaking BC.
>>>>>>
>>>>>> I see the following options:
>>>>>>
>>>>>> - Do nothing and force call sites to downcast (good enough today).
>>>>>> - Add *ExtendedLogger* version of methods to *LogManager*.
>>>>>> - Create a parallel class to *LogManager *called *ExtendedLogManger *that
>>>>>> only deals *ExtendedLogger*s
>>>>>>
>>>>>> *.*
>>>>>> Thoughts?
>>>>>>
>>>>>> Gary
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Sep 2, 2014 at 8:11 PM, Gary Gregory <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> I'm almost done, I'll commit, please review...
>>>>>>>
>>>>>>> Gary
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Sep 2, 2014 at 7:53 PM, Matt Sicker <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Yeah I think I can take care of that tonight.
>>>>>>>>
>>>>>>>>
>>>>>>>> On 2 September 2014 14:41, Gary Gregory <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Matt,
>>>>>>>>>
>>>>>>>>> Do you have time for that today?
>>>>>>>>>
>>>>>>>>> Gary
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> -------- Original message --------
>>>>>>>>> From: Matt Sicker
>>>>>>>>> Date:09/02/2014 14:20 (GMT-05:00)
>>>>>>>>> To: Log4J Developers List
>>>>>>>>> Subject: Re: log4j-streams and ExtendedLoggers
>>>>>>>>>
>>>>>>>>> Yeah I think that'd be a good idea.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 2 September 2014 09:49, Gary Gregory <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> So... should retype all of the methods that cast to
>>>>>>>>>> ExtendedLogger and in turn their call sites?
>>>>>>>>>>
>>>>>>>>>> Gary
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Tue, Sep 2, 2014 at 10:22 AM, Matt Sicker <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> This was written before all that was done. I had to rename it
>>>>>>>>>>> from LoggerProvider to ExtendedLogger even!
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 2 September 2014 09:21, Gary Gregory <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Some of the streams API take a org.apache.logging.log4j.Logger
>>>>>>>>>>>> and cast it to an org.apache.logging.log4j.spi.ExtendedLogger.
>>>>>>>>>>>>
>>>>>>>>>>>> Why not just type to an ExtendedLoggers?
>>>>>>>>>>>>
>>>>>>>>>>>> Gary
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> E-Mail: [email protected] | [email protected]
>>>>>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>>>>>> JUnit in Action, Second Edition
>>>>>>>>>>>> <http://www.manning.com/tahchiev/>
>>>>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>>>>>> Home: http://garygregory.com/
>>>>>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Matt Sicker <[email protected]>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> E-Mail: [email protected] | [email protected]
>>>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>>>>> JUnit in Action, Second Edition
>>>>>>>>>> <http://www.manning.com/tahchiev/>
>>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>>>>> Home: http://garygregory.com/
>>>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Matt Sicker <[email protected]>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Matt Sicker <[email protected]>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> E-Mail: [email protected] | [email protected]
>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>> Home: http://garygregory.com/
>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> E-Mail: [email protected] | [email protected]
>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>> <http://www.manning.com/bauer3/>
>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>> Blog: http://garygregory.wordpress.com
>>>>>> Home: http://garygregory.com/
>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Matt Sicker <[email protected]>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> E-Mail: [email protected] | [email protected]
>>>> Java Persistence with Hibernate, Second Edition
>>>> <http://www.manning.com/bauer3/>
>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>> Blog: http://garygregory.wordpress.com
>>>> Home: http://garygregory.com/
>>>> Tweet! http://twitter.com/GaryGregory
>>>>
>>>
>>>
>>>
>>> --
>>> Matt Sicker <[email protected]>
>>>
>>
>>
>>
>> --
>> E-Mail: [email protected] | [email protected]
>> Java Persistence with Hibernate, Second Edition
>> <http://www.manning.com/bauer3/>
>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>> Spring Batch in Action <http://www.manning.com/templier/>
>> Blog: http://garygregory.wordpress.com
>> Home: http://garygregory.com/
>> Tweet! http://twitter.com/GaryGregory
>>
>
>
>
> --
> Matt Sicker <[email protected]>
>



-- 
E-Mail: [email protected] | [email protected]
Java Persistence with Hibernate, Second Edition
<http://www.manning.com/bauer3/>
JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
Spring Batch in Action <http://www.manning.com/templier/>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Reply via email to