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