logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Sicker <boa...@gmail.com>
Subject Re: Set the file name based on command line args
Date Fri, 08 Aug 2014 21:40:09 GMT
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 <remko.popma@gmail.com> wrote:

> 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
> >
>



-- 
Matt Sicker <boards@gmail.com>

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