2010-12-09 29 views
2

これは、ログファイルを作成する場合にのみ適用されます。アプリケーションを使用してサーバーに接続すると、詳細がログファイルに書き込まれます。ログファイルが特定のサイズに達すると、1MBとし、LOG2.logという別のファイルを作成します。ディレクトリから最新のファイルを取得する方法

Nowログファイルに書き戻している間に、2つ以上のログファイルがあり、最新のものを取りたいと思っています。私は、そのディレクトリ内のすべてのファイルを通過し、処理時間がかかるので、ファイルをピックアップしたくない、最後に作成されたファイルまたはログファイルをディレクトリに取得する他の方法はありますか?

答えて

3

1つの可能な実装は、10を維持することですLog.logが1MBを超えていることをプログラムが検出した場合、Log09.logをLog10.logに、Log08.logをLog09.logに、7から8に、6から7に移動すると、古い(または多くの)古いログファイルが... 2〜3、Log.log〜Log02.log。最後に、新しいLog.logファイルを作成し、録音を続行します。

この方法では、常にLog.logに書き込みます。ファイルシステムの謎はありません。理論的には、このアプローチは、あなたが必要とする以上の数のログファイルに拡張可能であり、Log3023.logに書き込むよりも標準的です。さらに、現在のログをどこで見つけるかは常に分かります。

1

私は答えが "堅い"と信じています。 OSは、誰かが望むかもしれないオフチャンスの周りの可能なソート順の指標を保持しないため、最新のものを繰り返して検索する必要があります。

0

サーバーを変更できますか?その場合は、最新のログファイルの名前またはその実際の内容を含むLASTLOG.logファイルを導入してください。

そうでなければ、トニーはそうです。自分で繰り返す以外の方法はありません。どのようにエレガントについて

0

:(。一般的にcronを経由して)あなたの最善の策は、通常のUnixで行われます何である、ログファイルを回転させることである

ls -t | head -n 1 
+3

C++とWindowsのタグが付いている質問については、すべての病気のために良い治療法のように聞こえます。:-) –

+0

申し訳ありませんが、タグに気づいていませんでした:) – Spyros

0

最も効率的な方法は、特殊な関数を使用してすべてのエントリを調べることです(NTFSまたはFATは時間によってインデックスを作成しません)が、必要のないものは無視します。そのためには、FindFirstFileExと情報レベルFindExInfoBasicをご利用ください。これは8.3名前解決をスキップします。

関連する問題