I was thinking it would be easier to create a main() method wrapper or use byte code weaving to automatically wrap it. However, I realized that this wouldn't be useful for applications running in server containers like Tomcat without modifying that source.
On 8 August 2014 07:56, Remko Popma <[email protected]> wrote: > 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 > > > -- Matt Sicker <[email protected]>
