logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ralph Goers <ralph.go...@dslextreme.com>
Subject Re: Log4J2 Lookup working when run on IDE but not when run in the command line
Date Tue, 09 Jan 2018 22:07:55 GMT
Shoot. Replied to the wrong email.

Sent from my iPhone

> On Jan 9, 2018, at 3:00 PM, Ralph Goers <ralph.goers@dslextreme.com> 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 <boards@gmail.com> 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 <azinneera@gmail.com> 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*
>>> 
>>> <Routing name="Routing">
>>>  <Routes pattern="$${path:key2}">
>>>      <Route>
>>>         <RollingFile name="ABC_LOGFILE"
>>> fileName="${sys:abc.home}/${path:key2}.log"
>>> 
>>> filePattern="${sys:abc.home}/${path:key2}-%d{MM-dd-yyyy}-%i.log">
>>>            <PatternLayout pattern="[%d] %5p {%c} - %m%ex%n" />
>>>            <Policies>
>>>               <SizeBasedTriggeringPolicy size="50 MB" />
>>>            </Policies>
>>>            <DefaultRolloverStrategy max="100" />
>>>         </RollingFile>
>>>      </Route>
>>>  </Routes>
>>> </Routing>
>>> 
>>> *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 *<program_arguments>*
>>> 
>>> 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 <boards@gmail.com>
> 
> 
> 
> ---------------------------------------------------------------------
> 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


Mime
View raw message