logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Gregory <garydgreg...@gmail.com>
Subject Re: Set the file name based on command line args
Date Sat, 09 Aug 2014 01:36:38 GMT
On Fri, Aug 8, 2014 at 9:19 PM, Remko Popma <remko.popma@gmail.com> wrote:

> It would have been nice to have a fully automatic solution, and it's too
> bad that the JMX idea doesn't work, but bringing in new dependencies for
> this seems a bit overkill to me...
>

Well, the JMX works to pickup JVM arguments but not main arguments. I do
not know if that is useful though. So I won't include it for a first cut.


>
> I actually think Gary's solution to ask the user to add one line of code
> will be hard to beat for simplicity and ease of use.
>

Yes, simple is nice and it is very little code.

Should this go in now for 2.0.2 or wait for 2.1?

Gary


> It solves Arwen's original problem and is generic enough that many users
> can benefit from it.
>
> Sent from my iPhone
>
> > On 2014/08/09, at 6:40, Matt Sicker <boards@gmail.com> wrote:
> >
> > 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>
>
> ---------------------------------------------------------------------
> 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