On Wed, Sep 3, 2014 at 12:04 AM, Remko Popma <[email protected]> wrote:

>
> On 2014/09/03, at 12:00, Gary Gregory <[email protected]> wrote:
>
> Yes, the config creates the loggers, but something has to tell Log4j to
> call DriverManager.setLogWriter().
>
>
> I can see how it would be nice if this can be done in the log4j config,
> but since it's one line of code I think it's ok if the app does this.
>

Hmm... not if you are starting a 3rd party app and all you have to edit is
a log4j XML/JSON/YAML config!

Gary

>
>
> 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
>
>


-- 
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