Re: Log4J2 Lookup working when run on IDE but not when run in the command line
Hi Matt, Thank you for your response. I figured out the issue. Had to add the "packages" attribute in the element which I had not added before. On Wed, Jan 10, 2018 at 3:37 AM, Ralph Goers wrote: > 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
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
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
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