Para capturar esos logs, colocar en el main de la aplicación:
java.util.logging.Handler fh = new NCSAFileHandler();
java.util.logging.Logger.getLogger("").addHandler(fh);
La clase NCSAFileHandler es sencilla, sólo sobreescribe 1 método de su padre Handler:
public class NCSAFileHandler extends Handler {
...
private static Logger log = Logger.getLogger(NCSAFileHandler.class);;
@Override
public void publish(LogRecord logRecord) {
log.info(logRecord.getMessage());
}
}
Al método publish de NCSAFileHandler le llegarán todos los records (record = mensaje con el resumen del roundtrip de un request) de Restlet. Con publish botamos los records a log4j.
Para que el log de NCSAFileHandler quede en un DailyRollingFileAppender de log4j, en el main de la aplicación:
File ncsaLogFile = new File("/tmp/http_ncsa.log");
DailyRollingFileAppender ncsaAppender = new DailyRollingFileAppender();
ncsaAppender.setFile(ncsaLogFile.getAbsolutePath());
ncsaAppender.setName("DailyRollingFileAppenderNCSA");
ncsaAppender.setDatePattern("'.'yyyy-MM-dd");
ncsaAppender.activateOptions();
PatternLayout ncsaLayout = new PatternLayout("[%t] %m%n");
ncsaAppender.setLayout(ncsaLayout);
Logger ncsaLogger = Logger.getLogger(mipackage.ncsa.NCSAFileHandler.class);
ncsaLogger.addAppender(ncsaAppender);