Thanks Bob, this is of great help!

Muzaffer

> -----Original Message-----
> From: Bob Schellink [mailto:[EMAIL PROTECTED]
> Sent: Thursday, December 11, 2008 10:32 AM
> To: [email protected]
> Subject: Re: Logging in 1.4.2
> 
> Hi Muzaffer,
> 
> 
> Ozakca, Muzaffer wrote:
> > I’m still using 1.4.2 at the moment and wondering if there is a simple
> > way to change logging that is currently going to console. I guess,
> > setting the mode to “production” would remove most all logging messages
> > but I’m curious if there is a way to send log messages to a file. Would
> > I need to override ClickLogger?
> 
> 
> Yes you'll need to extend it and create a custom ClickServlet which
> overrides #createClickLogger to return the new logger.
> 
> Below is an example of how you could adapt to Java Logging (or Log4J).
> Please make a note that if you upgrade to 1.5 you'll need to remove
> this custom logger and switch to either the new JdkLogService or
> Log4JLogService.
> 
> 
> 
> MyClickServlet.java
> 
> public class MyClickServlet extends ClickServlet {
> 
>    protected ClickLogger createClickLogger() {
>      return new JdkClickLogger();
>    }
> }
> 
> 
> JdkClickLogger.java
> 
> public class JdkClickLogger extends ClickLogger {
> 
>      private Logger logger =
> Logger.getLogger(JdkClickLogger.class.getName());
> 
>      private Level level = Level.INFO;
> 
>      /** The level names. */
>      private static final String[] LEVELS =
>      { " [trace] ", " [debug] ", " [info ] ", " [warn ] ", " [error] " };
> 
>      public JdkClickLogger() {
>      }
> 
>      public void log(int levelInt, String message, Throwable error) {
> 
>          Level newLevel = Level.INFO;
> 
>          switch(levelInt) {
>              case 0:
>                  newLevel = Level.FINE;
>                  break;
>              case 1:
>                  newLevel = Level.INFO;
>                  break;
>              case 2:
>                  newLevel = Level.INFO;
>                  break;
>              case 3:
>                  newLevel = Level.WARNING;
>              case 4:
>                  newLevel = Level.SEVERE;
>          }
>          initLogLevels(newLevel);
>          logger.log(level, message, error);
>      }
> 
>      // Tricky bit with Java Logger. Need to init the new Log level
>      private void initLogLevels(Level newLevel) {
>          if(level.equals(newLevel)) {
>              return;
>          }
>          level = newLevel;
> 
>          Logger rootLogger = Logger.getLogger("");
>          rootLogger.setLevel(level);
> 
>          Handler[] handlers = rootLogger.getHandlers( );
> 
>          for (int i = 0; i < handlers.length; i++) {
>              handlers[i].setLevel(level);
>              //handlers[i].setLevel(Level.OFF);
>          }
>      }
> }

Reply via email to