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 <boa...@gmail.com> wrote: > Hey, it's better than having to use sun.util.Reflection! > > > On 6 August 2014 20:19, Gary Gregory <garydgreg...@gmail.com> wrote: > > > And worse: vendor specific! > > > > Gary > > > > > > On Wed, Aug 6, 2014 at 9:05 PM, Remko Popma <remko.po...@gmail.com> > 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 <garydgreg...@gmail.com> 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 <remko.po...@gmail.com> > > > 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 <garydgreg...@gmail.com> > 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 < > > > >> ralph.go...@dslextreme.com> </div><div>Date:08/06/2014 19:18 > > > >> (GMT-05:00) </div><div>To: Log4J Users List < > > > >> log4j-user@logging.apache.org> </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 <garydgreg...@gmail.com> > > > >> 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 < > > > ralph.go...@dslextreme.com > > > >>> > > > >>>> 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 <ap...@book.com> 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: > log4j-user-unsubscr...@logging.apache.org > > > >>>>> For additional commands, e-mail: > > log4j-user-h...@logging.apache.org > > > >>>> > > > >>>> > > > >>>> -- > > > >>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > > > >>>> 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: log4j-user-unsubscr...@logging.apache.org > > > >>> For additional commands, e-mail: > log4j-user-h...@logging.apache.org > > > >> > > > >> > --------------------------------------------------------------------- > > > >> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > > > >> For additional commands, e-mail: log4j-user-h...@logging.apache.org > > > > > > > > > > > > -- > > > > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > > > > 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: log4j-user-unsubscr...@logging.apache.org > > > For additional commands, e-mail: log4j-user-h...@logging.apache.org > > > > > > > > > > > > -- > > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > > 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 <boa...@gmail.com> > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org 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