スイープ処理
YKLook にはスイープ機能があります。
ある一定の周期・条件に基づいて YKLook
の作業ファイルとログファイルを自動的に古いものから順に削除します。
いわゆるパージ(purge・解放)処理をおこないます。
カスタマイズもできます。
これにより、コンピュータ管理者の手間・負担を軽くすることができます。
スイープ処理は以下のタイミングでおこなわれます。
- 初期表示後
- コールバック用メソッドの実行後
- 画面遷移時
- プログラム終了時
これ以外のタイミングでも実行したいときは、明示的に
yki_sweep()
メソッドを任意のタイミングで呼び出してください。
このメソッドを含め、詳細については次項以降で説明します。
デフォルトでは、以下の処理を、前項のタイミングごとに自動的に繰り返しおこないます。
- 作業ファイルについては、ファイルの変更時刻が現在時刻よりも1日を超えて昔のものを
1個だけ削除します。
- ログファイルについては、ファイルの変更時刻が現在時刻よりも3日を超えて昔のものを
1個だけ削除します。
この処理は、前項のタイミングごとにメソッド
yki_sweep()
を呼び出すことにより実行しています。
このメソッドは
YKLookMain
クラスにあり、プログラム製作者により実装(オーバーライド)可能なメソッドです。
YKLookMain
クラスのデフォルト実装では、単に
yk_sweep()
を呼び出しており、このメソッドが実際のパージ処理をおこないます。
超過時間と削除するファイル数はそれぞれカスタマイズできます。
詳細については次項以降で説明します。
実際にパージ処理をおこなう前項のメソッド
yk_sweep()
は、
メソッド
yki_sweep_info()
の戻り値を参考にしてファイルを削除しています。
この戻り値でファイル時刻の超過時間と削除するファイル数を決定しています。
このメソッドをプログラム製作者により実装(オーバーライド)することで、任意の超過時間とファイル数を指定できます。
def yki_sweep_info()
return [ 1, 'day', 20, 3, 'day', 10 ]
end
|
上の例は、超過時間はデフォルトのままで、削除するファイル数の最大値を変更し、作業ファイルが
20個まで、ログファイルが 10個までになります。
このファイル数は、1回のパージ処理に対するものです。
ファイル数を制限する目的は、処理時間を一定の時間以下に抑えるためです。
詳細は
クラス解説 YKLookMain
の各メソッドの説明をご覧ください。
メソッド
yki_sweep()
を実装(オーバーライド)することにより、YKLook
の作業ファイル以外の任意のファイルをスイープすることができます。
def yki_sweep()
super() # デフォルトのスイープ処理
... プログラム製作者の独自のスイープ処理 ...
end
|
上の例では、最初にスーパークラス
YKLookMain
の同メソッドを呼び出してデフォルト処理をおこない、その後で任意のスイープ処理をしています。
画面の表示は一切せず、単にスイープ処理だけをおこなうプログラムについて説明します。
通常のプログラム |
YKLookMain.yk_mainloop( Xxxxx.new() )
|
スイープ専用プログラム |
Xxxxx.new().yki_sweep()
|
通常のプログラムでは、メソッド
yk_mainloop()
を呼び出します。
しかしこれでは画面の表示処理とともにアプリ利用者からのイベント待ちになるため、呼び出し元に
すぐに制御が戻ってはきません。
そこで、
yk_mainloop()
を使わずに、直接
yki_sweep()
を呼び出せば、1回だけスイープ処理をしてすぐに呼び出し元に制御が戻ってきます。
ログファイルのスイープには注意が必要です。
スイープ処理の対象になるのはデフォルトのエラー出力用のログファイルを保存しているディレクトリのみです。
それ以外のディレクトリをスイープする場合は、
yki_sweep()
を実装・オーバーライドしてスイープ処理をしてください。
前述の
任意ファイルのスイープ を参考にしてください。
実際にどのディレクトリがデフォルトなのかを確認するには、
環境設定 > YKLookの作業用ディレクトリ → ディレクトリを確認
を参考にしてください。
Copyright (c) 2003-2010 YorozuKotowariYa Ltd.