私は責任記事のウィキチェーンからロガーの例を試していました。アイデアで例を実行すると、次のように出力されます。
Sending to stderr: An error has occurred.
Writing to stdout: Entering function y.
Writing to stdout: Step1 completed.
Sending via email: Step1 completed.
Writing to stdout: An error has occurred.
Sending via email: An error has occurred.
しかし、stderrs writeMessage にブレークポイントを設定すると
class StderrLogger extends Logger {
public StderrLogger(int mask) {
this.mask = mask;
}
protected void writeMessage(String msg) {
System.err.println("Sending to stderr: " + msg);//break out here
}
}
std err を除くすべてのメッセージを出力します。ここにはスレッドは含まれていません。では、なぜ run ケースの最初の行に stderr を出力するのでしょうか?