永久限制tomcat

时间:2016-04-20 07:01:08

标签: apache tomcat logging catalina

我在运行Ubuntu的虚拟机上使用tomcat 7。现在,我在catalina.out/var/lib/tomcat7/logs/catalina.out个文件,大小超过20GB。我尝试首先通过this教程旋转日志文件。然后我发现它将在夜晚结束时监控它。即使手动启动服务也没什么用。所以我删除了文件,但是在我重新启动tomcat之后出现了。

然后,我尝试执行接受conf/logging.properties所接受的答案.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler并更改以下行:

.handlers = 1catalina.org.apache.juli.FileHandler

catalina.out

这似乎已经工作了一分钟,至少在我重新启动虚拟机之前。一旦发生这种情况,我最终得到了另一个20GB var circles = d3.selectAll('circle') var label = d3.select('svg').append('text') .attr('transform', 'translate(' + [5,100] + ')') var zOrders = { IDs: circles[0].map(function(cv){ return cv.id; }), xPos: circles[0].map(function(cv){ return cv.cx.baseVal.value; }), yPos: circles[0].map(function(cv){ return cv.cy.baseVal.value; }), radii: circles[0].map(function(cv){ return cv.r.baseVal.value; }), customOrder: [3, 4, 1, 2, 5] } var setOrderBy = 'IDs'; var setOrder = d3.descending; label.text(setOrderBy); circles.data(zOrders[setOrderBy]) circles.sort(setOrder);文件。

是否有一些经过验证的方法可以阻止文件超过5MB,或者只是限制文件?

1 个答案:

答案 0 :(得分:-1)

As' Stefan'指出您可以使用标准java.util.logging.FileHandler而不是Tomcat附带的标准。

默认情况下,org.apache.juli.FileHandler级别设置为ALL。您可以尝试提高处理程序日志级别以过滤调试类型消息组。

.handlers = 1catalina.org.apache.juli.FileHandler
1catalina.org.apache.juli.FileHandler.level=WARNING
#1catalina.org.apache.juli.FileHandler.level=OFF

否则,您似乎必须通过设置.filter属性在处理程序上编写自定义过滤器和install it

public class FileLengthFilter implements Filter {

    private final File target;
    private final long limit;

    public FileLengthFilter() {
        final String p = getClass().getName();
        LogManager lm = LogManager.getLogManager();
        String v = lm.getProperty(p + ".file");
        target = new File(v == null ? "." : v);

        v = lm.getProperty(p + ".limit");
        long l;
        try {
            l = Long.parseLong(v);
        } catch (RuntimeException re) {
            l = 5L * 1024L * 1024L;
        }
        this.limit = l;
    }

    @Override
    public boolean isLoggable(LogRecord record) {
        try {
            return target.length() <= limit;
        } catch (RuntimeException se) {
            return false;
        }
    }
}