为什么我的程序会创建空的.lck文件?

时间:2010-04-27 17:01:30

标签: java logging lockfile

我正在尝试使用Java Logger。我得到了我的记录器文件(name.log)与内容,它工作,我也得到一个空的name.log.lck文件。

为什么会显示此文件,正在创建它们的程序以及如何删除此行为?

4 个答案:

答案 0 :(得分:15)

处理程序(文件处理程序)使用

.lck来锁定文件以删除此文件。在关闭程序之前,需要关闭与该记录器对象关联的Handler。

以下是关于如何关闭相关处理程序的示例行:

for(Handler h:log.getHandlers())
{
    h.close();   //must call h.close or a .LCK file will remain.
}

答案 1 :(得分:3)

锁定文件通常用于Unix / Linux,以确保对重要资源的独占或串行访问。

在这种情况下,资源是日志文件本身 - 您不希望两个或更多记录器实例同时尝试写入同一个日志文件。这根本不会很好。有关file locking

的更多信息

正如Peter Barrett says关于Java Logger:

  

创建日志文件时,会调用一个单独的锁定文件(在您的文件中)   case)“dbslogfile.txt.lck”也被创建。 Logger使用它作为   用于访问实际日志文件的互斥机制。

答案 2 :(得分:1)

“。lck”听起来像一个锁文件。你没有说你使用哪个记录器,但是在弹性器件中,其中一个使用.lck文件来锁定 - 请参阅this reply

创建日志文件时,会调用一个separet锁定文件(在您的文件中) case)“dbslogfile.txt.lck”也被创建。 Logger使用它作为 用于访问实际日志文件的互斥机制。它 似乎没有能够创建它(它必须创建 当然,日志文件之前的锁文件。)

答案 3 :(得分:0)

为什么有.LCK文件在附近?

在Linux中我有这些.LCK个文件:

> ls -l
-rw-r--r--  1 el el 4810 Feb  9  2013 mybackground.gif
-rw-r--r--  1 el el   33 Feb  9  2013 mybackground.gif.LCK
-rwxr--r--  1 el el  193 Feb  9  2013 my_file.html
-rw-r--r--  1 el el   33 Feb  9  2013 my_file.html.LCK

某些程序正在创建这些文件。你必须找出它是哪一个。执行此操作的程序将是一个程序,它尝试通过网络或甚至在此磁盘上对这些文件执行某种操作。在磁盘上同步,复制或删除文件的编写不良的程序可能会选择在其操作中使用锁文件。

我的锁文件包含以下信息:

eric||my.myemail@hotmail.com

一旦离开它们的不负责任的进程退出,就可以安全地删除.LCK个文件。这些文件的目的是确保执行相同操作的两个进程不会相互踩错导致错误。

使用.LCK文件是一种糟糕的编程习惯,违反了“不要自己猜测”的规则。创建执行多余操作的代码只是为了确保我们做得正确是sign you are a bad programmer

任何乱扔垃圾的节目都会乱扔垃圾。挂在身边的L​​CD文件应该以极端的偏见来判断为负面。

就我而言,这是一个“DreamWeaver CS4自动同步”操作,它正在创建并打开这些文件。您必须手动删除这些文件,然后找出导致这些文件保持打开的操作,然后提交错误报告以修复该软件。