Apache 永久限制tomcat的catalina.out文件大小
我正在运行Ubuntu的虚拟机上使用Tomcat7。现在,我在Apache 永久限制tomcat的catalina.out文件大小,apache,tomcat,logging,catalina,Apache,Tomcat,Logging,Catalina,我正在运行Ubuntu的虚拟机上使用Tomcat7。现在,我在/var/lib/tomcat7/logs/catalina.out上有一个大于20GB的catalina.out文件。我首先尝试通过教程旋转日志文件。然后我发现它会在晚上监控它。即使是手动启动服务也没有多大用处。所以我删除了这个文件,但它是在我重新启动tomcat之后出现的 然后,我尝试按照公认的答案去做,即进入conf/logging.properties,并将以下行从: .handlers=1catalina.org.apach
/var/lib/tomcat7/logs/catalina.out
上有一个大于20GB的catalina.out
文件。我首先尝试通过教程旋转日志文件。然后我发现它会在晚上监控它。即使是手动启动服务也没有多大用处。所以我删除了这个文件,但它是在我重新启动tomcat之后出现的
然后,我尝试按照公认的答案去做,即进入conf/logging.properties
,并将以下行从:
.handlers=1catalina.org.apache.juli.FileHandler,java.util.logging.ConsoleHandler
到
.handlers=1catalina.org.apache.juli.FileHandler
这似乎已经工作了一分钟,至少在我重新启动虚拟机之前是这样。一旦发生这种情况,我就得到了另一个20GBcatalina.out
文件
是否有一些行之有效的方法可以阻止文件超过5MB,或者完全限制文件?正如“Stefan”所指出的,您可以使用标准的
java.util.logging.FileHandler
而不是Tomcat附带的方法
默认情况下,该级别设置为“全部”。您可以尝试提高处理程序日志级别以筛选调试类型消息组
.handlers = 1catalina.org.apache.juli.FileHandler
1catalina.org.apache.juli.FileHandler.level=WARNING
#1catalina.org.apache.juli.FileHandler.level=OFF
否则,看起来您必须通过设置.filter
属性在处理程序上编写自定义筛选器和
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;
}
}
}
公共类FileLengthFilter实现过滤器{
私有最终文件目标;
私人最终长期限制;
公共文件长度筛选器(){
最后一个字符串p=getClass().getName();
LogManager lm=LogManager.getLogManager();
字符串v=lm.getProperty(p+“.file”);
目标=新文件(v==null?”。“:v);
v=lm.getProperty(p+“.limit”);
长l;
试一试{
l=Long.parseLong(v);
}捕获(运行时异常re){
l=5L*1024L*1024L;
}
这个极限=l;
}
@凌驾
公共布尔isLoggable(日志记录){
试一试{
return target.length()正如“Stefan”所指出的,您可以使用标准的java.util.logging.FileHandler
而不是Tomcat附带的
默认情况下,级别设置为“全部”。您可以尝试提高处理程序日志级别以筛选调试类型消息组
.handlers = 1catalina.org.apache.juli.FileHandler
1catalina.org.apache.juli.FileHandler.level=WARNING
#1catalina.org.apache.juli.FileHandler.level=OFF
否则,看起来您必须通过设置.filter
属性在处理程序上编写自定义筛选器和
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;
}
}
}
公共类FileLengthFilter实现过滤器{
私有最终文件目标;
私人最终长期限制;
公共文件长度筛选器(){
最后一个字符串p=getClass().getName();
LogManager lm=LogManager.getLogManager();
字符串v=lm.getProperty(p+“.file”);
目标=新文件(v==null?”。“:v);
v=lm.getProperty(p+“.limit”);
长l;
试一试{
l=Long.parseLong(v);
}捕获(运行时异常re){
l=5L*1024L*1024L;
}
这个极限=l;
}
@凌驾
公共布尔isLoggable(日志记录){
试一试{
return target.length()应该深入查看和。应该深入查看和。