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 <garydgreg...@gmail.com> 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 <garydgreg...@gmail.com>
> 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 <garydgreg...@gmail.com>
> > 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 <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
> >>
> >
> >
> >
> > --
> > 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
> >
>
>
>
> --
> 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
>



-- 
Mikael Ståldal
Chief Software Architect
*Appear*
Phone: +46 8 545 91 572
Email: mikael.stal...@appearnetworks.com

Reply via email to