Gary - the $$ form requires that the component call StrSubstitutor to resolve 
the variables. If the application needs to do that for some reason then the 
Appender would need to support it.

Ralph

> On Mar 8, 2021, at 9:46 AM, Gary Gregory <garydgreg...@gmail.com> wrote:
> 
> What Ralph said :-)
> 
> The tests in Log4j as well as the ones I have at work all use one $ in
> connection strings. I do not have tests that use $$.
> 
> Gary
> 
> 
> On Mon, Mar 8, 2021, 11:13 Ralph Goers <ralph.go...@dslextreme.com> wrote:
> 
>> If I understand what Gary is saying correctly is that you would configure
>> your Log4j2.xml file with the connection string for MongoDB. In the
>> connection string you would have variables. If the variable is of the form
>> ${varName} then it will be resolved when the configuration is processed. If
>> a variable is of the form $${varName} then the first ‘$’ is stripped off
>> when the configuration is processed and the internal component may resolve
>> variables when they are actually used.
>> 
>> Variables in Log4j 2 are implemented as Lookups - see
>> http://logging.apache.org/log4j/2.x/manual/lookups.html for the list of
>> Lookups that Log4j provides. You can add your own.
>> 
>> Ralph
>> 
>>> On Mar 8, 2021, at 7:01 AM, Julian Woodward <jul...@ldcvia.com> wrote:
>>> 
>>> Hi Gary
>>> 
>>> It's been a while, but I'm trying this now. I don't understand where the
>>> opportunity is to inject values in the way you're describing (the $$
>>> approach) when log4j2 is being instantiated at startup time by Spring. By
>>> the time we reach 'my' code, it's too late and the mongodb4 setup has
>>> already failed. Have I misunderstood, or is there a code sample that you
>>> know of where this is actually in use?
>>> 
>>> Many thanks,
>>> 
>>> Julian Woodward
>>> 
>>> *Liberate your Domino data with LDC Via*
>>> jul...@ldcvia.com
>>> +44 (0) 7956 227546
>>> +44 (0) 20 3633 3009
>>> http://ldcvia.com
>>> 
>>> *LDC Via Limited is a limited company registered 09209489 in England &
>>> Wales at 24 Ivymount Road, London, SE27 0NB. *
>>> *Disclaimer: This message is intended only for the use of the individual
>> or
>>> entity to which it is addressed and may contain information which is
>>> privileged, confidential, proprietary, or exempt from disclosure under
>>> applicable law. If you are not the intended recipient or the person
>>> responsible for delivering the message to the intended recipient, you are
>>> strictly prohibited from disclosing, distributing, copying, or in any way
>>> using this message. If you have received this communication in error,
>>> please notify the sender and destroy and delete any copies you may have
>>> received. *
>>> 
>>> 
>>> On Mon, 30 Nov 2020 at 23:29, Gary Gregory <garydgreg...@gmail.com>
>> wrote:
>>> 
>>>> Hello Julian,
>>>> 
>>>> When I created the version 4 of the MongoDB appender, I realized that
>> for
>>>> all the use cases I had and I felt were reasonable, I could use a
>>>> connection string, a bit like you can in JDBC, which I could not do
>> with a
>>>> version 3 driver. There are two settings IIRC that I did not find
>> mappings
>>>> in a version 4 connection string: capped and collection size.
>>>> 
>>>> Note that you can also parameterize the configuration with
>> ${variables}, so
>>>> you could parameterize the user and password in a connection string,
>> see:
>>>> 
>>>> -
>>>> 
>>>> 
>> https://logging.apache.org/log4j/2.x/manual/configuration.html#RuntimeLookup
>>>> -
>>>> 
>>>> 
>> https://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution
>>>> -
>>>> 
>>>> 
>> https://logging.apache.org/log4j/2.x/manual/appenders.html#NoSQLAppenderMongoDB4
>>>> 
>>>> If you feel like you still need the factory method as a mechanism to
>> create
>>>> a provider, then please feel free to provide a PR on GitHub here:
>>>> https://github.com/apache/logging-log4j2
>>>> 
>>>> Gary
>>>> 
>>>> On Mon, Nov 30, 2020 at 10:17 AM Julian Woodward <jul...@ldcvia.com>
>>>> wrote:
>>>> 
>>>>> When the mongodb4 appender was created for log4j2, the ability to
>>>> specify a
>>>>> factory class/method in the log4j2.xml file was removed, and the
>>>>> configuration option was instead reverted to requiring a simple
>>>> connection
>>>>> string.
>>>>> 
>>>>> Was there a technical reason why that needed to happen, or was it just
>>>> for
>>>>> simplicity at dev time?
>>>>> 
>>>>> I've been relying on the factory approach, as the database credentials
>>>> are
>>>>> not known until run-time in my use-case. I was also looking forward to
>>>>> having a mongodb4 version to upgrade to, but as it stands now this is
>>>>> unfortunately not giving me what I need.
>>>>> 
>>>>> Thanks!
>>>>> 
>>>>> Julian Woodward
>>>>> 
>>>>> PS New to this forum, so please be forgiving of any breaches of
>>>> etiquette!
>>>>> 
>>>> 
>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> 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

Reply via email to