> On 2014/08/09, at 10:36, Gary Gregory <[email protected]> wrote:
> 
>> On Fri, Aug 8, 2014 at 9:19 PM, Remko Popma <[email protected]> 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?

Up to you. 
-Remko

> 
> 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 <[email protected]> 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 <[email protected]> wrote:
>>>> 
>>>> Ouch!
>>>> 
>>>> 
>>>> On Fri, Aug 8, 2014 at 9:24 PM, Gary Gregory <[email protected]>
>>>> 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 <[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
>>> 
>>> 
>>> 
>>> --
>>> Matt Sicker <[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]

Reply via email to