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

Reply via email to