Java Logger を使用しようとしています。コンテンツを含むロガー ファイル (name.log) を取得します。これは機能し、空のname.log.lck
ファイルも取得します。
このファイルが表示される理由、ファイルを作成しているプログラム、およびこの動作を削除する方法を教えてください。
.lck
このファイルを削除するために、ファイルをロックするためにハンドラー (ファイル ハンドラー) によって使用されます。プログラムを閉じる前に、そのロガー オブジェクトに関連付けられている Handler を閉じる必要があります。
関連付けられたハンドラーを閉じる方法のサンプル行を次に示します。
for(Handler h:log.getHandlers())
{
h.close(); //must call h.close or a .LCK file will remain.
}
ロック ファイルは、重要なリソースへの排他的またはシリアル アクセスを確保するために、Unix/Linux で一般的に使用されます。
この場合、リソースはログ ファイルそのものです。2 つ以上のロガー インスタンスが同時に同じログ ファイルに書き込もうとすることは望ましくありません。それはまったくうまくいきません。ファイルのロックの詳細
Peter Barrettが Java Logger について次のように述べています。
ログファイルが作成されると、(あなたの場合)「dbslogfile.txt.lck」と呼ばれる別のロックファイルも作成されます。Logger は、実際のログ ファイルにアクセスするための相互排除メカニズムとしてこれを使用します。
「.lck」はロック ファイルのように疑わしく聞こえます。どのロガーを使用しているかはわかりませんでしたが、そのうちの 1 つがロックに .lck ファイルを使用しています。この返信を参照してください。
ログファイルが作成されると、(あなたの場合は)「dbslogfile.txt.lck」という別のロックファイルも作成されます。Logger は、実際のログ ファイルにアクセスするための相互排除メカニズムとしてこれを使用します。それを作成できなかったようです (もちろん、ログ ファイルの前にロック ファイルを作成する必要があります)。
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
ファイルを開いたままにしていた無責任なプロセスが終了したら、ファイルを削除しても安全です。これらのファイルの目的は、同じことを行う 2 つのプロセスが互いに影響を与えてエラーが発生しないようにすることです。
ファイルの使用.LCK
は、「自分で推測しないでください」という規則に違反する、貧弱なプログラミング手法です。冗長なことを行うコードを作成して、3 重に正しく作成したことを確認することは、あなたが悪いプログラマーであることを示しています。
これらの .LCK ファイルを乱雑に散らかしているプログラムは、極度の偏見をもって否定的に判断されるべきです。
私の場合、これらのファイルを作成して開いたままにしていたのは、「DreamWeaver CS4 自動同期」操作でした。これらのファイルを手動で削除してから、これらのファイルが開いたままになっている原因を特定し、バグ レポートを送信してそのソフトウェアを修正する必要があります。