Q:
ログによってプリンタモジュールが機能しなくなるのはなぜでしょうか?Mac OS X 10.0 と 10.1 では、正常に動作していました。
A:
Mac OS X の以前のバージョンとは異なり、Mac OS X 10.2(Jaguar)では、印刷システム(CUPS)は stdout を利用してモジュール間の情報の経路指定を行います。プリンタモジュール(PM)または I/O モジュール(IOM)の中に、printf などを経由して stdout へログを出力しようとするコードがあると、それらは印刷システムの妨げとなります。ログファイルへ書き出す必要がある場合は、fprintf を使って特定のファイルに書き出すか、または stderr にログ情報を送信してください。例については、リスト 1 を参照してください。
// /private/var/log/cups/error_log に書き出す
fprintf( stderr, "This message will appear in the CUPS error log." );
// ログファイルに書き出す
fprintf( file, "This message will appear in your own log file" );
| |
リスト 1. ログ出力例
|
Jaguar では、PM と IOMは、現在ログイン中のユーザとしてではなくデーモンとして実行するため、fprintf 経由でファイルにログを出力する場合は、目的のディレクトリに適切なパーミッションを設定する必要があることを知っておいてください。
さらに、デバッキングの手助けとして、CUPS の構成ファイルである /etc/cups/cupsd.conf を編集して LogLevel を変更することにより、CUPS の error_log ファイルのログレベルを調節できます。リスト 2 に、編集する必要のある cupsd.conf ファイル中の関連セクションを示します。
#
# LogLevel: ErrorLog ファイルにログ出力されるメッセージ数を制御し
# 以下のいずれかにできる:
#
# debug2 すべてのログをとる
# debug ほとんどすべてのログをとる
# info すべての要求と状態の変化についてのログをとる
# warn エラーと警告のログをとる
# error エラーのみログをとる
# none ログをとらない
#
LogLevel info
| |
リスト 2. cups.conf ファイルの error_log ログレベルの制御
|
[2002 年 11 月 6 日]
|