Re: Log4J2 Lookup working when run on IDE but not when run in the command line

2018-01-09 Thread Ralph Goers
Shoot. Replied to the wrong email.

Sent from my iPhone

> On Jan 9, 2018, at 3:00 PM, Ralph Goers  wrote:
> 
> Maybe, but the point is that the batch is managed by the appender, so there 
> is no need for a new method in the Appender interface.
> 
> Ralph
> 
>> On Jan 9, 2018, at 2:20 PM, Matt Sicker  wrote:
>> 
>> A common source of problems with custom plugins is related to the
>> Log4j2Plugins.dat file not being generated or being included on the
>> classpath. If you shade everything into a single jar, for example, you need
>> to use a custom shade rule to merge the plugin dat files (I've seen some
>> shade plugins include this feature natively for log4j2 specifically).
>> 
>> If you could share more info about how you build your application, that
>> would be super helpful!
>> 
>>> On 9 January 2018 at 12:28, Asma Zinneera Jabir  wrote:
>>> 
>>> I am using the Routing Appender in Log4J2 to route to different log files.
>>> The path is determined by a custom LookUp. The configuration and the lookup
>>> are as follows.
>>> 
>>> *Log4j2.xml Routing appender*
>>> 
>>> 
>>>  
>>>  
>>> >> fileName="${sys:abc.home}/${path:key2}.log"
>>> 
>>> filePattern="${sys:abc.home}/${path:key2}-%d{MM-dd-}-%i.log">
>>>
>>>
>>>   
>>>
>>>
>>> 
>>>  
>>>  
>>> 
>>> 
>>> *Custom Lookup*
>>> 
>>> @Plugin(name = "path", category = StrLookup.CATEGORY)
>>> public class LogFilePathLookup implements StrLookup {
>>>   private static String logFilePath = "abc";
>>> 
>>>   @Override
>>>   public String lookup(String key) {
>>>   return null;
>>>   }
>>> 
>>>   @Override
>>>   public String lookup(LogEvent logEvent, String key) {
>>>   return logFilePath;
>>>   }
>>> 
>>>   /**
>>>* Sets the log file path.
>>>*
>>>* @param logFilePath log file path
>>>*/
>>>   public static void setLogFilePath(String logFilePath) {
>>>   LogFilePathLookup.logFilePath = logFilePath;
>>>   }
>>> }
>>> 
>>> This works perfectly when I run on the IDE (Intellij IDEA) with the VM
>>> options set as
>>> -Dlog4j.configurationFile=/path/to/log4j2.xml
>>> -Dabc.home=/home/asma/abchome
>>> 
>>> and some program arguments. But when the same is run in the terminal as
>>> 
>>> java -Dlog4j.configurationFile=/path/to/log4j2.xml
>>> -Dabc.home=/home/asma/abchome -jar **
>>> 
>>> the name of the log file getting created is ${path:key2}.log, meaning it is
>>> not replaced by the lookup String value. What could be the reason for this?
>>> 
>>> 
>>> 
>>> Regards,
>>> Asma
>>> 
>> 
>> 
>> 
>> -- 
>> Matt Sicker 
> 
> 
> 
> -
> 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



Re: Log4J2 Lookup working when run on IDE but not when run in the command line

2018-01-09 Thread Ralph Goers
Maybe, but the point is that the batch is managed by the appender, so there is 
no need for a new method in the Appender interface.

Ralph

> On Jan 9, 2018, at 2:20 PM, Matt Sicker  wrote:
> 
> A common source of problems with custom plugins is related to the
> Log4j2Plugins.dat file not being generated or being included on the
> classpath. If you shade everything into a single jar, for example, you need
> to use a custom shade rule to merge the plugin dat files (I've seen some
> shade plugins include this feature natively for log4j2 specifically).
> 
> If you could share more info about how you build your application, that
> would be super helpful!
> 
>> On 9 January 2018 at 12:28, Asma Zinneera Jabir  wrote:
>> 
>> I am using the Routing Appender in Log4J2 to route to different log files.
>> The path is determined by a custom LookUp. The configuration and the lookup
>> are as follows.
>> 
>> *Log4j2.xml Routing appender*
>> 
>> 
>>   
>>   
>>  > fileName="${sys:abc.home}/${path:key2}.log"
>> 
>> filePattern="${sys:abc.home}/${path:key2}-%d{MM-dd-}-%i.log">
>> 
>> 
>>
>> 
>> 
>>  
>>   
>>   
>> 
>> 
>> *Custom Lookup*
>> 
>> @Plugin(name = "path", category = StrLookup.CATEGORY)
>> public class LogFilePathLookup implements StrLookup {
>>private static String logFilePath = "abc";
>> 
>>@Override
>>public String lookup(String key) {
>>return null;
>>}
>> 
>>@Override
>>public String lookup(LogEvent logEvent, String key) {
>>return logFilePath;
>>}
>> 
>>/**
>> * Sets the log file path.
>> *
>> * @param logFilePath log file path
>> */
>>public static void setLogFilePath(String logFilePath) {
>>LogFilePathLookup.logFilePath = logFilePath;
>>}
>> }
>> 
>> This works perfectly when I run on the IDE (Intellij IDEA) with the VM
>> options set as
>> -Dlog4j.configurationFile=/path/to/log4j2.xml
>> -Dabc.home=/home/asma/abchome
>> 
>> and some program arguments. But when the same is run in the terminal as
>> 
>> java -Dlog4j.configurationFile=/path/to/log4j2.xml
>> -Dabc.home=/home/asma/abchome -jar **
>> 
>> the name of the log file getting created is ${path:key2}.log, meaning it is
>> not replaced by the lookup String value. What could be the reason for this?
>> 
>> 
>> 
>> Regards,
>> Asma
>> 
> 
> 
> 
> -- 
> Matt Sicker 



-
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org



Re: Log4J2 Lookup working when run on IDE but not when run in the command line

2018-01-09 Thread Matt Sicker
A common source of problems with custom plugins is related to the
Log4j2Plugins.dat file not being generated or being included on the
classpath. If you shade everything into a single jar, for example, you need
to use a custom shade rule to merge the plugin dat files (I've seen some
shade plugins include this feature natively for log4j2 specifically).

If you could share more info about how you build your application, that
would be super helpful!

On 9 January 2018 at 12:28, Asma Zinneera Jabir  wrote:

> I am using the Routing Appender in Log4J2 to route to different log files.
> The path is determined by a custom LookUp. The configuration and the lookup
> are as follows.
>
> *Log4j2.xml Routing appender*
>
> 
>
>
>fileName="${sys:abc.home}/${path:key2}.log"
>
>  filePattern="${sys:abc.home}/${path:key2}-%d{MM-dd-}-%i.log">
>  
>  
> 
>  
>  
>   
>
>
> 
>
> *Custom Lookup*
>
> @Plugin(name = "path", category = StrLookup.CATEGORY)
> public class LogFilePathLookup implements StrLookup {
> private static String logFilePath = "abc";
>
> @Override
> public String lookup(String key) {
> return null;
> }
>
> @Override
> public String lookup(LogEvent logEvent, String key) {
> return logFilePath;
> }
>
> /**
>  * Sets the log file path.
>  *
>  * @param logFilePath log file path
>  */
> public static void setLogFilePath(String logFilePath) {
> LogFilePathLookup.logFilePath = logFilePath;
> }
> }
>
> This works perfectly when I run on the IDE (Intellij IDEA) with the VM
> options set as
> -Dlog4j.configurationFile=/path/to/log4j2.xml
> -Dabc.home=/home/asma/abchome
>
> and some program arguments. But when the same is run in the terminal as
>
> java -Dlog4j.configurationFile=/path/to/log4j2.xml
> -Dabc.home=/home/asma/abchome -jar **
>
> the name of the log file getting created is ${path:key2}.log, meaning it is
> not replaced by the lookup String value. What could be the reason for this?
>
>
>
> Regards,
> Asma
>



-- 
Matt Sicker