logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Remko Popma <remko.po...@gmail.com>
Subject Re: Set the file name based on command line args
Date Fri, 08 Aug 2014 12:56:38 GMT
Ouch!


On Fri, Aug 8, 2014 at 9:24 PM, Gary Gregory <garydgregory@gmail.com> 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 <remko.popma@gmail.com> 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 <
> > mikael.staldal@appearnetworks.com> 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 <garydgregory@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 <garydgregory@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 <garydgregory@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 <boards@gmail.com>
> > wrote:
> > >>>>>
> > >>>>> Hey, it's better than having to use sun.util.Reflection!
> > >>>>>
> > >>>>>
> > >>>>>> On 6 August 2014 20:19, Gary Gregory <garydgregory@gmail.com>
> > wrote:
> > >>>>>>
> > >>>>>> And worse: vendor specific!
> > >>>>>>
> > >>>>>> Gary
> > >>>>>>
> > >>>>>>
> > >>>>>>> On Wed, Aug 6, 2014 at 9:05 PM, Remko Popma <
> remko.popma@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 <garydgregory@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.popma@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 <garydgregory@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.goers@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
<
> > >>>>> garydgregory@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.goers@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 <apond@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-unsubscribe@logging.apache.org
> > >>>>>>>>>>>> For additional commands, e-mail:
> > >>>>>> log4j-user-help@logging.apache.org
> > >>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>>>> --
> > >>>>>>>>>>> E-Mail: garydgregory@gmail.com | ggregory@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-unsubscribe@logging.apache.org
> > >>>>>>>>>> For additional commands, e-mail:
> > >>>>> log4j-user-help@logging.apache.org
> > >>>>>
> ---------------------------------------------------------------------
> > >>>>>>>>> To unsubscribe, e-mail:
> > >> log4j-user-unsubscribe@logging.apache.org
> > >>>>>>>>> For additional commands, e-mail:
> > >>>>> log4j-user-help@logging.apache.org
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>>>> --
> > >>>>>>>> E-Mail: garydgregory@gmail.com | ggregory@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-unsubscribe@logging.apache.org
> > >>>>>>> For additional commands, e-mail:
> > >> log4j-user-help@logging.apache.org
> > >>>>>>
> > >>>>>>
> > >>>>>> --
> > >>>>>> E-Mail: garydgregory@gmail.com | ggregory@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 <boards@gmail.com>
> > >>>>
> > >>>>
> > >>>>
> > >>>> --
> > >>>> E-Mail: garydgregory@gmail.com | ggregory@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: garydgregory@gmail.com | ggregory@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: garydgregory@gmail.com | ggregory@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.staldal@appearnetworks.com
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
> > For additional commands, e-mail: log4j-user-help@logging.apache.org
> >
> >
>
>
> --
> E-Mail: garydgregory@gmail.com | ggregory@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
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message