On Aug 16, 2013, at 4:55 PM, Gary Gregory <garydgreg...@gmail.com> wrote:
> On Fri, Aug 16, 2013 at 7:54 PM, Gary Gregory <garydgreg...@gmail.com>wrote: > >> On Fri, Aug 16, 2013 at 6:21 PM, David Nault <david.na...@criticalpath.net >>> wrote: >> >>> Hi All, >>> >>> We're using Log4j in a webapp and are looking at migrating to Log4j 2. >>> >>> We'd like to continue writing our log files to a location under the >>> webapp's context root -- that is, under the directory returned by >>> ServletContext.getRealPath("/"). This works very well in our QA environment >>> where multiple versions of the webapp are deployed to a single Tomcat >>> server. >>> >>> I've written a Lookup plugin that maps "${web:rootDir}" to the desired >>> path. The problem is that the plugin is ignored when parsing the config >>> file, specifically the "filename" attribute of a "File" appender. The >>> BaseConfiguration object seems to be using a StrSubstitutor with a default >>> Interpolator that only knows about the "sys" and "env" prefixes. >>> >>> For what it's worth, the custom Lookup plugin works fine when used in a >>> pattern layout string. >>> >>> Any thoughts on how to get the BaseConfiguration to use a custom Lookup >>> plugin, or alternate ways to get the log files to appear under the webapp >>> root? System properties aren't the solution since they are shared between >>> webapps and we'd rather not return to the bad old days of using a different >>> property for each webapp. >>> >>> Log4j 2 beta 8. >>> >>> >> Any config item that is annotated with Log4j annotations has to be part of >> Log4J's config dat file. I'm not not 100% sure, but I think you might have >> to regenerate Log4J's config dat file. There might be a way to scan the CP >> for additional code to scan... >> > > Also: This might be a nice add-on to Log4j if you're willing to contribute > it ;) > > Gary > Thanks Gary. I've filed LOG4J2-364 and contributed what I've got so far. Regarding scanning the class path for plugins, I thought I had taken care of this by executing the following line in a ServletContextListener that runs before Log4j: PluginManager.addPackage(WebLookup.class.getPackage().getName()); This doesn't seem to have an effect though, since BaseConfiguration doesn't use the PluginManager to create it's initial list of Lookup implementations. Thanks, David --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-user-h...@logging.apache.org