We handle recursion. Ralph
On Sep 2, 2014, at 9:22 PM, Matt Sicker <[email protected]> wrote: > They'd have to use a different Appender than the JDBC one for that, though, > or I think that may start some sort of logging feedback loop. > > > On 2 September 2014 23:12, Gary Gregory <[email protected]> wrote: > 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 ExtendedLoggers. >> >> 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 >> JUnit in Action, Second Edition >> Spring Batch in Action >> 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 >> JUnit in Action, Second Edition >> Spring Batch in Action >> 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 >> JUnit in Action, Second Edition >> Spring Batch in Action >> 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 >> JUnit in Action, Second Edition >> Spring Batch in Action >> 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 >> JUnit in Action, Second Edition >> Spring Batch in Action >> 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 >> JUnit in Action, Second Edition >> Spring Batch in Action >> 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 >> JUnit in Action, Second Edition >> Spring Batch in Action >> 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 > JUnit in Action, Second Edition > Spring Batch in Action > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory > > > > -- > Matt Sicker <[email protected]>
