I have followed the wiki regarding Repository Selectors for initialising log4j, and have got it working for my web apps.
I am using struts 1.2 and in the struts actions, I can use log4j and have it log properly. I also have a log statement inside the InitServlet where log4j is initialised and it works too.
However when I try and log from inside a servlet filter the logging does not get executed at all.
The filter is one to determine if a user is logged in, and if not redirect to the login page. This is working as the redirection happens properly. However the logging is not.
This works:
public class InitServlet extends HttpServlet { private static Logger log; public void init(ServletConfig config) throws ServletException { super.init(config); ServletContext context = config.getServletContext(); System.setProperty("log4j.log.dir", getInitParameter("log4j.log_directory")); String configFile = getInitParameter("log4j.config_file"); Log4JRepositorySelector.init(config, configFile); log = Logger.getLogger(getClass()); log.debug("logging initialised"); [snip] } }
public class LoginFilter implements Filter { private Logger log = Logger.getLogger(getClass()); public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; log.debug("uri = " + req.getRequestURI()); [snip] // otherwise continue chain.doFilter(request, response); } }