Romain,
On 11/20/15 2:44 PM, Romain Manni-Bucau wrote:
> any reason the AccessLogValve doesnt rely on JULI -
> https://github.com/apache/tomcat/blob/trunk/java/org/apache/catalina/valves/AccessLogValve.java#L515
> ?
Because JULI is slow, and we want logging to be fast.
Logging frameworks are super-flexible, let you add/remove information at
runtime and do things like conditionally-log messages or even
conditionally filter them as they are going to log sinks (like a
specific file for instance). For an access log, you pretty much always
want to log everything. There's no reason for all those options.
> Makes it quite complicated to extend the logging logic or use another
> logging framework with more rotation policy for instance.
The rotation policy for the access logger is certainly crude.
I don't believe AccessLogValve was really intended to be extensible...
that's what AbstractAccessLogValve is for: just write your own subclass
like this:
public class FrameworkAccessLogValve extends AbstractAccessLogValve {
private Log log;
private Level level;
public void setLog(Log log) { this.log = log; }
public Log getLog() { return this.log; }
public void Level setLevel(Level level) { this.level = level; }
public Level getLevel() { return this.level; }
@Override
protected abstract void log(CharArrayWriter message) {
getLog().log(getLevel(), message);
}
}
If you think that kind of thing would be useful in Tomcat, I suppose we
could commit it.
-chris
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]