添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在使用Java logging的过程中,产生了许多.lck文件和带着后缀的重复文件。尝试使用记事本打开这两种文件,.lck文件为空,不同的重复文件中记录的是一条或者几条不同的log信息。而需求是要将这些所有的log信息记录到一个文件中。

.lck文件的作用

名副其实,lck是lock的缩写。这类文件其实之前我们也接触过,不过大都没有注意而已。比如说使用VMware虚拟机运行Linux系统过程中,虚拟机对应的文件夹就会产生一个.lck文件,当虚拟机关闭相应的文件也会自动删除。但是如果虚拟机异常关闭.lck文件保留的情况下,再运行这个虚拟机将会遇到类似虚拟机不存在的错误(曾经遇到过)。说到这里其实也能对它的作用做一些基本的判断了。.lck文件就是对文件的一种锁定方式,当文件处于被访问状态时,一部分处理机制就是生成.lck文件防止其他进程的读取。当对着个文件访问的进程正常结束时,该文件自动删除,保持可访问状态。

问题的处理方法

将lck文件全部删除,发现lck文件生成在程序运行阶段,但是关闭了以后并没被删除,手动删除以后再次运行,发现需要写入的log写入到了正确的文件中而不是另外生成一个带后缀的重名文件。考虑到是使用FileHandler过程中未调用close()方法来结束进程,于是在代码末尾添加了close()方法,发现仍会出现相同的问题,但是生成的重名文件变少了几个。问题没有解决,但是方向和思路应该就在这里。

然后我检查了我所有的代码,定义过FileHandler的地方

for(Handler h:log.getHandlers()) h.close(); //must call h.close or a . LCK file will remain.
在C语言体系 文件 操作对于初学者一直是个神奇的存在,为什么呢?因为 文件 为什么能通过指针来操作一直是个迷。 而且初学者第一次接触了FILE* 这个系统定义的指针类型,可容易因为陌生感而 产生 畏难情绪,很可惜,本文假定读者已经走过了 对一些系统定义的畏难阶段,不算老手,但是也不完全是 菜鸟。现在,我们一起来操作 文件 常用函数一(api) - fopen - fread...
Spring Boot 使用 Commons Logging 进行所有内部 日志 记录 ,但保留底层 日志 实现。 Spring Boot 为 Java Util Logging ,Log4J2 和 Logback 提供了默认配置。 在每种情况下, 记录 器都预先配置为 使用 控制台输出,同时还提供可选的 文件 输出。 默认情况下,如果 使用 Starters,则 使用 Logback进行 日志 记录 。还包括适当的Logback路由,以确保 使用 Java Util Logging ,Commons Logging ,Log4J或SLF4J的 问题 是很这样的: 1. 当在Eclipse 使用 maven的Tomcat 插件启动的时候,是不会报错的; 2. 当将war包放到 tomcat 容器 ,启动Tomcat server的时候,就会报错.eclipse 使用 的Tomcat插件如下:<build> <plugins> <plugi
什么是 LCK 文件 类型? "Lock "的缩写,. lck 文件 扩展名代表通用的Lock 文件 (. lck 文件 类型。锁 文件 (. lck )是由某些应用程序和操作系统自动创建的小型服务 文件 ,用于用户当前主动打开的任何用户 文件 。 锁定 文件 (. lck )的目的是标记用户 文件 (通常是数据库)的 "繁忙 "状态,以避免在多用户和多任务环境 数据丢失或损坏,否则另一个用户或进程可能会试图向已经打开的 文件 写入。锁定 文件 总是在与要锁定的用户 文件 相同的位置创建,通常借用它们的 文件 名。锁定 文件 的存在 "锁定 "了用户 文件 ,禁止所有的写访问,