在使用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
)的目的是标记用户
文件
(通常是数据库)的 "繁忙 "状态,以避免在多用户和多任务环境
中
数据丢失或损坏,否则另一个用户或进程可能会试图向已经打开的
文件
写入。锁定
文件
总是在与要锁定的用户
文件
相同的位置创建,通常借用它们的
文件
名。锁定
文件
的存在 "锁定 "了用户
文件
,禁止所有的写访问,