0

Java アプリケーションから余分なコード行を削除するエレガントな方法を見つけようとしています。

以下のように、コンソールとログファイルに出力する個別のコード行があります。

catch (SQLException e)
            {
                e.printStackTrace();
                System.out.println("The Database connection failed to open check username/password and connection url are valid.");
                logger.info("The Database connection failed to open check username/password and connection url are valid.");
                end(2);
            }

stdout を使用してコンソールとログ ファイルの両方で起動する方法があるかどうか疑問に思っていました。

これを行う関数を作成することを検討しましたが、コンソールに出力するかどうかのレベルを決定するのは複雑すぎます。

私がやろうとしていることを達成するための迅速でスマートな方法はありますか?

私のプログラムは完璧に機能し、過剰に設計しようとしているだけなので、余分なコード行が何を害するのか、と言うことができると思います。

4

2 に答える 2

2

のサブクラスをいつでも使用System.setOut()および提供できPrintStream、やりたくないことは何でもできます...

それが不要な作業と思われる場合は、メソッドに入れてください...

// Warning, untested code!

enum Level {DEBUG, INFO, WARNING, ERROR}

public static Logger logger; // Whereever you get this one...

public static void log(Level level, String s) {
    System.out.println(level.name() + ": " + s);
    switch (level) {
         case INFO:
             logger.info(s);
             break;

         // The other levels...
    }
}

個人的に、私は自分のロガーを作りました (本当に簡単です):

L.i("Testing logging");

出力

[INFO , 12:07:41.455, utill.log.Test.main.10]: Testing logging

構成可能で、ファイルや別のストリームにリダイレクトする必要がある場合は、非常に簡単です。しかし、self4jのようなロギング フレームワークも同様に機能すると思います。

于 2013-11-01T11:03:00.313 に答える