2017-12-27 185 views
-1

我正在研究将信息和错误记录器作为日志供我们参考的文本文件写入的Java应用程序。该文件正在大幅增长,所以我需要检查文件的大小...例如,如果文件大小超过10 Mb,我必须创建另一个文件。在使用tomcat server.xml或web.xml创建新日志之前备份日志文件

像这样,我必须创建10个文件,一个接一个地旋转,直到10个文件。达到10个文件后,我必须删除开始文件并重新开始创建...

如何删除文件后的否。的文件将成为10?

此操作的主要限制是试图在不使用log4j或logback库的情况下完成要求。

Logging.properties

1catalina.org.apache.juli.AsyncFileHandler.level = FINE 
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. 

2localhost.org.apache.juli.AsyncFileHandler.level = FINE 
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost. 

3manager.org.apache.juli.AsyncFileHandler.level = FINE 
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 
3manager.org.apache.juli.AsyncFileHandler.prefix = manager. 

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE 
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager. 

java.util.logging.ConsoleHandler.level = FINE 
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter 


############################################################ 
# Facility specific properties. 
# Provides extra control for each logger. 
############################################################ 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler 
+0

您是否在使用第三方API(如log4j)? – Ele

+0

即使你不想使用log4j,你也可以看看它的源代码:http://grepcode.com/file/repo1.maven.org/maven2/log4j/log4j/1.2.15/org/apache/ log4j/RollingFileAppender.java – StephaneM

+0

包含一些日志代码和/或配置文件。 – jmehrens

回答

0

鉴于你的限制,你可以使用java.util.logging.FileHandler代替org.apache.juli.AsyncFileHandler

1catalina.org.apache.juli.AsyncFileHandler.level = FINE 
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. 

2localhost.java.util.logging.FileHandler.level = FINE 
2localhost.java.util.logging.FileHandler.limit = 10000000 
2localhost.java.util.logging.FileHandler.count = 10 
2localhost.java.util.logging.FileHandler.pattern = ${catalina.base}/logs/localhost%g.log 

3manager.org.apache.juli.AsyncFileHandler.level = FINE 
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 
3manager.org.apache.juli.AsyncFileHandler.prefix = manager. 

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE 
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager. 

java.util.logging.ConsoleHandler.level = FINE 
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter 


############################################################ 
# Facility specific properties. 
# Provides extra control for each logger. 
############################################################ 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler 

你必须modify的logging.properties这样你就可以安装JUL的FileHandler。