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

Reply via email to