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
