Java原生Loggerとlog 4 jの基礎の総括と実例


この間出張して、帰ってきて新しいプロジェクトグループに変えて、JavaSwingツールを開発しました.ブログは続きます.
リンク:http://blog.csdn.net/jediael_lu/article/details/32098879
JAvaはロガーを持参
Loggerには、レコーダ(Logger)、プロセッサ(Handler)、フォーマット(Formatter)の3つの重要な概念があります.
  • Logger:ログの記録、ログレベルの設定など.
  • Handler:出力位置などを決定します.
  • Fomatter:記録中の情報を自分の意思でフォーマットします.

  • 1.ロガー関連
    オブジェクトの作成
    static Logger getLogger(String name);
    static Logger getLogger(String name,String resourceBundleName);
    //name         ,                              
    //resourceBundleName         
    

    名前を付ける
    原則として任意に名前を付けることができますが、実際にはパッケージ名と類似しており、階層があります.
    レベル
  • SEVERE
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST

  • ALLとOFFを使用して、すべてのレコードをオンまたはオフにすることができます.
    デフォルトでは上位3レベル、SEVERE、WARNING、INFOのみが記録されます.
    プロファイルを編集することで、ログシステムのさまざまなプロパティを変更できます.デフォルトではjre/lib/loggingにファイルが存在します.properties
    FINEレベルのメッセージをコンソールで表示するには、次のように設定します.
    java.util.logging.ConsoleHandler.level=FINE

    プロファイルを変更したくない場合は、独自のプロセッサをインストールします.
    
    Logger logger = Logger.getLogger("com.mycompany.myapp");
    logger.setLevel(Level.FINE);
    logger.setUseParentHandlers(false);
    Handler handler = new ConsoleHandler();
    handler.setLevel(Level.FINE);
    logger.addHandler(handler);
    

    2.Handler相関
    loggerにHandlerを追加して、異なる形式の出力を行うことができます.
    ConsoleHandler:コンソールに出力
    デフォルトではinfoレベル以上のlogがコンソールに出力されます.
    ログ・レベルを変更し、プロファイルを通過したくない場合は、ConsoleHandlerを作成して出力レベルを変更できます(上記の例を参照).
    FileHandler:ファイルに出力
    
    Logger logger = Logger.getLogger("test");
    FileHandler fileHandler = new FileHandler("d:\\logtest.log");
    logger.setLevel(Level.FINE);
    logger.setUseParentHandlers(false);
    //          
    fileHandler.setLevel(Level.FINE);
    logger.addHandler(fileHandler);
    logger.info("start log");
    logger.fine("fine?");

    ファイル形式が指定されていない場合、ログ出力形式はXMLです.
    Java原生Logger与log4j基础总结与实例_第1张图片
    SocketHandler:ネットワークに出力
    3.Formatter関連
    
    public class Test {
        public static void main(String[] args) throws IOException {
        	Logger logger = Logger.getLogger("test");
        	FileHandler fileHandler = new FileHandler("d:\\logtest.log");
        	logger.setLevel(Level.FINE);
        	logger.setUseParentHandlers(false);
        	fileHandler.setLevel(Level.FINE);
        	fileHandler.setFormatter(new MyLogHander());
        	logger.addHandler(fileHandler);
        	logger.info("start log");
        	logger.fine("fine?");
        }
    }
    
    class MyLogHander extends Formatter {
    	@Override
    	public String format(LogRecord record) {
    		formatMessage(record);
    	        return record.getLevel() + ":" + record.getMessage()+"
    "; } }

    log4j
    明日は続きます...眠いです.