Ouch!
On Fri, Aug 8, 2014 at 9:24 PM, Gary Gregory <[email protected]> wrote: > It's worse than that, the JMX look up does not provide access to the main > args. The other lookup I created and attached to the jira needs to be > initialized by the user. > > Gary > > > On Fri, Aug 8, 2014 at 7:41 AM, Remko Popma <[email protected]> wrote: > > > Note that log4j will only invoke this logic if the application has a > > lookup of the form ${main:<argnum>} in its configuration. > > > > In environments without JMX the app may even need to explicitly > initialize > > the main arguments map. > > > > This doesn't happen without being requested by the app, so I don't share > > the concern. > > > > Sent from my iPhone > > > > > On 2014/08/08, at 16:54, Mikael Ståldal < > > [email protected]> wrote: > > > > > > To me, it seems conceptually wrong for a library (like Log4j) to read > > > command line arguments behind the scenes without involvement from the > > > application. Command line arguments are for the application to parse. > > > > > > System properties is the proper way to configure a library without > > > involvement from the application > > > > > > > > >> On Thu, Aug 7, 2014 at 7:02 PM, Gary Gregory <[email protected]> > > wrote: > > >> > > >> Please see this experiment: > > >> https://issues.apache.org/jira/browse/LOG4J2-771 > > >> > > >> Gary > > >> > > >> > > >> On Thu, Aug 7, 2014 at 7:57 AM, Gary Gregory <[email protected]> > > >> wrote: > > >> > > >>> On an Oracle JVM, you use a system property lookup to get the > > >>> "sun.java.command" system property which gives you the whole command > > line > > >>> but we do not have a syntax to parse it... > > >>> > > >>> Gary > > >>> > > >>> > > >>> On Thu, Aug 7, 2014 at 2:27 AM, Gary Gregory <[email protected] > > > > >>> wrote: > > >>> > > >>>> It'll be more complicated than just grabbing the main args of > course. > > >>>> > > >>>> If I say something like ${main:0} that seems easy to deal with, but > > when > > >>>> I say ${main:--file} or ${main:-f} or ${main:-file}, that should > > pickup > > >> the > > >>>> _next_ arg in the array. What if it is missing or the next arg is > > >> another > > >>>> dash option? Too bad I guess. What are the rules? > > >>>> > > >>>> I could see two lookup classes: > > >>>> - One is a named Map Lookup built from a String[], which would be a > > >>>> singleton called by the main method: > > >>>> MainArgumentsLookup.SINGELTON.set(args); Is the args array a > reference > > >> or a > > >>>> deep copy? > > >>>> - Another is the more complex and vendor dependent (and unproven) > > stack > > >>>> walker. > > >>>> > > >>>> Gary > > >>>> > > >>>> > > >>>>> On Wed, Aug 6, 2014 at 11:45 PM, Matt Sicker <[email protected]> > > wrote: > > >>>>> > > >>>>> Hey, it's better than having to use sun.util.Reflection! > > >>>>> > > >>>>> > > >>>>>> On 6 August 2014 20:19, Gary Gregory <[email protected]> > > wrote: > > >>>>>> > > >>>>>> And worse: vendor specific! > > >>>>>> > > >>>>>> Gary > > >>>>>> > > >>>>>> > > >>>>>>> On Wed, Aug 6, 2014 at 9:05 PM, Remko Popma < > [email protected] > > > > > >>>>>> wrote: > > >>>>>> > > >>>>>>> Oooh... A little naughty, but a lot of fun! :-) > > >>>>>>> Thanks for the pointer! > > >>>>>>> > > >>>>>>> Sent from my iPhone > > >>>>>>> > > >>>>>>>> On 2014/08/07, at 9:44, Gary Gregory <[email protected]> > > >>>>> wrote: > > >>>>>>>> > > >>>>>>>> With some debug API hackery: > > >> > > > http://docs.oracle.com/javase/7/docs/jdk/api/jpda/jdi/com/sun/jdi/StackFrame.html > > >>>>>>>> > > >>>>>>>> Gary > > >>>>>>>> > > >>>>>>>> > > >>>>>>>>> On Wed, Aug 6, 2014 at 8:36 PM, Remko Popma < > > >>>>> [email protected]> > > >>>>>>> wrote: > > >>>>>>>>> > > >>>>>>>>> I don't follow... If you walk the stack trace you can find the > > >>>>> name of > > >>>>>>> the > > >>>>>>>>> original class whose main() method was called, but how would > > >> that > > >>>>> give > > >>>>>>> you > > >>>>>>>>> access to the main method's parameter values? > > >>>>>>>>> > > >>>>>>>>> Sent from my iPhone > > >>>>>>>>> > > >>>>>>>>>> On 2014/08/07, at 9:26, Gary Gregory <[email protected]> > > >>>>> wrote: > > >>>>>>>>>> > > >>>>>>>>>> Yes you are right but the stack walker could be used even if > > >> you > > >>>>> do > > >>>>>> not > > >>>>>>>>> control to source for main. Maybe a script calls a main and > then > > >>>>> my > > >>>>>> app > > >>>>>>>>> plugin gets called and I want to also follow the verbose > command > > >>>>> line > > >>>>>>>>> setting. > > >>>>>>>>>> > > >>>>>>>>>> > > >>>>>>>>>> Gary > > >>>>>>>>>> > > >>>>>>>>>> <div>-------- Original message --------</div><div>From: Ralph > > >>>>> Goers < > > >>>>>>>>> [email protected]> </div><div>Date:08/06/2014 19:18 > > >>>>>>>>> (GMT-05:00) </div><div>To: Log4J Users List < > > >>>>>>>>> [email protected]> </div><div>Subject: Re: Set the > > >>>>> file > > >>>>>>> name > > >>>>>>>>> based on command line args </div><div> > > >>>>>>>>>> </div>Wouldn’t it be easier to have a Lookup that your main > > >>>>> called > > >>>>>> and > > >>>>>>>>> just passed the arguments? But yeah, it should be possible to > > >> do > > >>>>> what > > >>>>>>> you > > >>>>>>>>> are suggesting. > > >>>>>>>>>> > > >>>>>>>>>> Ralph > > >>>>>>>>>> > > >>>>>>>>>>> On Aug 6, 2014, at 4:09 PM, Gary Gregory < > > >>>>> [email protected]> > > >>>>>>>>> wrote: > > >>>>>>>>>>> > > >>>>>>>>>>> I wonder if we could write a "MainArgumentsLookup" that finds > > >>>>> the > > >>>>>> main > > >>>>>>>>>>> thread and walks up the stack to the public static > > >>>>> main(String[]) > > >>>>>> main > > >>>>>>>>>>> methods and gets the arguments from the stack... > > >>>>>>>>>>> > > >>>>>>>>>>> Gary > > >>>>>>>>>>> > > >>>>>>>>>>> > > >>>>>>>>>>> On Wed, Aug 6, 2014 at 6:54 PM, Ralph Goers < > > >>>>>>> [email protected] > > >>>>>>>>>> > > >>>>>>>>>>> wrote: > > >>>>>>>>>>> > > >>>>>>>>>>>> Well…. > > >>>>>>>>>>>> > > >>>>>>>>>>>> You would really be passing the name of the file to the > > >>>>> Appender, > > >>>>>>> not a > > >>>>>>>>>>>> Logger. Loggers only reference Appenders so you can’t > really > > >>>>>>> configure > > >>>>>>>>>>>> them with Appender configuration data. That said, Log4j 2 > > >>>>> provides > > >>>>>> a > > >>>>>>>>> few > > >>>>>>>>>>>> ways you could do this: > > >>>>>>>>>>>> 1. Set a system property and reference it via > > >>>>> ${sys:propertyName} > > >>>>>> in > > >>>>>>>>> the > > >>>>>>>>>>>> configuration. The manual has examples of this. > > >>>>>>>>>>>> 2. Create a custom Lookup Plugin and then register the file > > >>>>> name > > >>>>>> with > > >>>>>>>>> the > > >>>>>>>>>>>> Lookup. Then reference it from the configuration as > > >>>>> ${myLookup: > > >>>>>>> key} > > >>>>>>>>>>>> where myLookup is the name of your custom Lookup and key is > > >> the > > >>>>>> name > > >>>>>>>>> that > > >>>>>>>>>>>> represents the file name value. > > >>>>>>>>>>>> 3. Create a custom Configuration the extends > XMLConfiguration > > >>>>> or > > >>>>>>>>>>>> JSONConfiguration. Pass the file name to that class and have > > >>>>> it add > > >>>>>>>>> that as > > >>>>>>>>>>>> a property to the properties Map in the configuration. The > > >> XML > > >>>>>> could > > >>>>>>>>> then > > >>>>>>>>>>>> just reference it as ${propertyName}. > > >>>>>>>>>>>> > > >>>>>>>>>>>> Ralph > > >>>>>>>>>>>> > > >>>>>>>>>>>>> On Aug 6, 2014, at 2:03 PM, Arwen Pond <[email protected]> > > >>>>> wrote: > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> My application takes a parameter where the user can specify > > >>>>> the > > >>>>>> log > > >>>>>>>>>>>> file. I'd like to pass this parameter to the Logger which > > >>>>> uses a > > >>>>>>>>>>>> FileAppender. I am not sure how to do this in log4j 2. > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> Thanks, > > >>>>>>>>>>>>> Arwen > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> This electronic mail message contains information that (a) > > >> is > > >>>>> or > > >>>>>>>>>>>>> may be CONFIDENTIAL, PROPRIETARY IN NATURE, OR OTHERWISE > > >>>>>>>>>>>>> PROTECTED > > >>>>>>>>>>>>> BY LAW FROM DISCLOSURE, and (b) is intended only for the > use > > >>>>> of > > >>>>>>>>>>>>> the addressee(s) named herein. If you are not an intended > > >>>>>>>>>>>>> recipient, please contact the sender immediately and take > > >> the > > >>>>>>>>>>>>> steps necessary to delete the message completely from your > > >>>>>>>>>>>>> computer system. > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> Not Intended as a Substitute for a Writing: Notwithstanding > > >>>>> the > > >>>>>>>>>>>>> Uniform Electronic Transaction Act or any other law of > > >> similar > > >>>>>>>>>>>>> effect, absent an express statement to the contrary, this > > >>>>> e-mail > > >>>>>>>>>>>>> message, its contents, and any attachments hereto are not > > >>>>>>>>>>>>> intended > > >>>>>>>>>>>>> to represent an offer or acceptance to enter into a > contract > > >>>>> and > > >>>>>>>>>>>>> are not otherwise intended to bind this sender, > > >>>>>>>>>>>>> barnesandnoble.com > > >>>>>>>>>>>>> llc, barnesandnoble.com inc. or any other person or > entity. > > >>>>>> > > --------------------------------------------------------------------- > > >>>>>>>>>>>> To unsubscribe, e-mail: > > >>>>> [email protected] > > >>>>>>>>>>>> For additional commands, e-mail: > > >>>>>> [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 > > >>>>> > --------------------------------------------------------------------- > > >>>>>>>>>> To unsubscribe, e-mail: > > >>>>> [email protected] > > >>>>>>>>>> For additional commands, e-mail: > > >>>>> [email protected] > > >>>>> > --------------------------------------------------------------------- > > >>>>>>>>> To unsubscribe, e-mail: > > >> [email protected] > > >>>>>>>>> For additional commands, e-mail: > > >>>>> [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 > > >> --------------------------------------------------------------------- > > >>>>>>> To unsubscribe, e-mail: > [email protected] > > >>>>>>> For additional commands, e-mail: > > >> [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 > > >> > > >> > > >> > > >> -- > > >> 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 > > > > > > > > > > > > -- > > > Mikael Ståldal > > > Chief Software Architect > > > *Appear* > > > Phone: +46 8 545 91 572 > > > Email: [email protected] > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [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 >
