Servlets 为什么java日志记录创建了一个.lck文件而没有删除它

Servlets 为什么java日志记录创建了一个.lck文件而没有删除它,servlets,logging,weblogic,java.util.logging,Servlets,Logging,Weblogic,Java.util.logging,我正在尝试使用java.util.logging实现一个应用程序级记录器(部署在weblogic中的webapps) 我从ApacheJuli日志系统获取ClassLoaderLogManager,因为它已经实现了应用程序级日志记录 这就是我的servlet代码(SimpleServlet.java)的样子: ClassLoaderLogManager ClassLoaderLogManager = new ClassLoaderLogManager () ; String nameoflogg

我正在尝试使用java.util.logging实现一个应用程序级记录器(部署在weblogic中的webapps)

我从ApacheJuli日志系统获取ClassLoaderLogManager,因为它已经实现了应用程序级日志记录

这就是我的servlet代码(SimpleServlet.java)的样子:

ClassLoaderLogManager ClassLoaderLogManager = new ClassLoaderLogManager () ;
String nameoflogger = SimpleServlet.class.getName() ;   
boolean status = ClassLoaderLogManager .addLogger(nameoflogger);   
if(status) 
{
     Logger logger = ClassLoaderLogManager .getLogger(nameoflogger);   
     logger.log(Level.FINEST, "testing SimpleServlet FINEST");
     logger.log(Level.INFO, "testing SimpleServlet INFO");
     logger.log(Level.SEVERE, "testing SimpleServlet SEVERE");   
}    
ClassLoaderLogManager .reset();  
我在java_home/jre/lib中有logging.properties文件,如下所示

handlers= java.util.logging.FileHandler

#.level= INFO

# default file output is in user's home directory.

java.util.logging.FileHandler.pattern = %h/java_%g.log
java.util.logging.FileHandler.limit = 200
java.util.logging.FileHandler.count = 10
java.util.logging.FileHandler.append  = true
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter


# Limit the message that are printed on the console to INFO and above.
#java.util.logging.ConsoleHandler.level = INFO
#java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

package8.SimpleServlet.handler = java.util.logging.FileHandler

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

# For example, set the com.xyz.foo logger to only log SEVERE
# messages:
package8.SimpleServlet.level = SEVERE
因此,当我运行webapp时,当我访问webapp时,我希望创建java_0.log、java_1.log(日志文件旋转)等。但是我也看到了java0.log.lck,java1.log.lck

日志文件仅显示预期的严重级别日志

为什么会发生这种情况?如果我在java代码端创建了一个处理程序,那么关闭该处理程序就可以解决这个问题。买y不是在这里处理的吗

或者是因为我在使用org.apache.juli.ClassLoaderLogManager时使用的是am,而不是org.apache.juli.FileHandler
??当FileHandler打开时,您应该看到锁定文件。如果您看到它们在VM退出后仍然存在,那么这是因为FileHandler未关闭,VM在处理程序关闭挂钩运行时暂停或崩溃,或者在尝试删除它们时发生I/O异常

您可能会遇到以下相关问题:


查看配置,根记录器上安装了一个FileHandler,SimpleServlet上安装了一个FileHandler。由于ClassLoaderLogManager没有以JVM全局方式使用,因此安装的默认LogManager会在启动本地ClassLoaderLogManager之前创建文件处理程序。从您拥有的java_home/jre/lib comfig中删除FileHandler条目,并使用
ClassLoaderLogManager.readConfiguration
方法加载webapp本地配置。

没有帮助的答案是
java.util.logging
完全是垃圾,应该避免使用更好的方法。没有帮助的答案是。。我不能用log4j。我需要用这个。