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
