201711671224「Javaプログラミング」第15章の学習の要約

コンテンツの概要を学びます

ログAPI

出発点は、ロガーの例を作成し、ログLoggerクラスを使用することです処理されるべき多くの要素であり、コンストラクタLoggerクラスは、クラスを識別する同じjava.util.loggingパッケージではありませんLoggerインスタンスを取得するには、新しいダイレクトを作成することはできません保護されて,,必要があります静的メソッドのgetLoggerロガー()を使用。

getLogger()を呼び出して、あなたはLoggerインスタンスは、名前空間の名前空間に属し指定する必要があります。「」区別レベル、同じ名前空間ロガーの親ロガーの設定と同じレベルとして。

ロガーは通常、そのクラスで行われ、名前空間は、そのクラスの完全な名前と命名されます。多くの場合、それは仕方のロガーによって行われます。

import java.util.logging.*;

public class LoggerDemo {
public static void main(String[] args) {
    Logger logger = Logger.getLogger(LoggerDemo.class.getName());
    logger.log(Level.WARNING, "WARNING 訊息");
    logger.log(Level.INFO, "INFO 訊息");
    logger.log(Level.CONFIG, "CONFIG 訊息");
    logger.log(Level.FINE, "FINE 訊息");
}
}

結果は以下の通りであります:

クライアントがログLoggerインスタンス()メソッドを呼び出した場合、最初のレベルのフィルタ情報に基づいて行われます、そしてそこに一つであり、それはisLoggable()がtrueを返した場合、その後、ロガーのインスタンスはFilterインタフェースを設定するかどうかを見て、ハンドルインスタンスを公開します呼び出します()メソッドは、ハンドルはisLoggable及び()がtrueを返した場合、情報をフォーマットするフォーマットフォーマッタインスタンス()メソッドを呼び出し、最後にオブジェクト・コール・メッセージが出力フォーマット、フィルタ自身のインスタンスを設定してもよいです。

与フォーマッタを扱います

StreamHandle ConsoleHandle、ファイルハンドルとSockeHandleに分割されて分割MemoryHandleとStreamHandleを扱います。

LoggerがAddHandle()removeHandleを使用して、新しいインスタンスを扱うことができます()削除ハンドル。例えば、例を見て:


public class HandlerDemo {
public static void main(String[] args) throws IOException {
    Logger logger = Logger.getLogger(HandlerDemo.class.getName());
    logger.setLevel(Level.CONFIG);
    FileHandler handler = new FileHandler("%h/config.log");
    handler.setLevel(Level.CONFIG);
    logger.addHandler(handler);
    logger.config("Logger 組態完成");
}
}

文字列を作成する場合、「%hは、」ユーザのルートディレクトリを表すファイルハンドル指定モードは、システムはまた、又は自動的に「%のG」文書番号を使用して一時ディレクトリ「&T」を使用して達成することができます。

デフォルトでは、フロントSimpleFormatter ConsoleHandle、フォーマッタ両者のサブクラスであるデフォルトを使用()メソッドで見XMLFormatterフォーマッタファイルハンドルは、フォーマッタsetFormatterによって設定されたハンドルです。

パターンとマッチャー

  • プログラムで使用される式は、最初に正しい文字列の比較を決定するための式、正規表現構文の動作のための分析、検証ルールを実行する必要があります。
  • 例としては、JVM内のオブジェクトを表すjava.util.regex.Patternの正規表現され、パターンコンストラクタはプライベートとしてマークされ、)(静的メソッドのコンパイルパターンによって取得する必要があります。

  • パターン例を得た後、文字列分割()メソッドを使用することの効果に等しいルールを切断する指定された文字列で表されるスプリット()メソッドを使用します。

JDK8のAPIの拡張

各列の間にコンマで区切られた接続を指定する文字列新しい参加()静的メソッドを:文字列は、()に参加します。

アレイ:

  • 新parallelPrefix()、配列およびparallelSort()メソッドのparallelSetAll()。
  • parallelPrefix()メソッドはxxxBinaryOperatorインスタンスを指定することができ、同様のストリーム()プロシージャを減らします。
  • アレイが初期化や、各要素のインデックスをリセットさparallelSetAll()メソッド。
  • parallelSort()メソッドは、指定された配列は、パラレル方式のサブアレイに分割することができ、ソートされ、その後、ソートマージ。

国際的

地域内のアプリケーションのユーザーによっては、アプリケーションが設計されている場合、あなたは、このような日付形式、この設計など、さまざまな言語で直接ユーザーに応じて、アプリケーションの例を変更することなく、愛することができ、ローカリゼーションと呼ばれる別の言語、日付形式を提示国際化と呼ばれる、国際的になって考えてみましょう。

ベース名を持つ国際的な地域情報リソースバンドルの三つの重要な概念。クラスのロケールに対応したエリア情報、ResourceBundleのオブジェクトは、JVMのオブジェクトの代わりにリソースパッケージです。getBundleの名のResourceHandleは、指定された基底名である使用、指定された時間()は、各リソースパックの情報の同じセットを表すが、異なる領域は、同じベース名を共有します。

ReasourceBUndleは名前の基礎に基づいて、文書に対応する情報を取得する方法です使用します。

  1. 文書についての情報を取得するために指定されたLocaleオブジェクトを使用します。
  2. Locale.getDefault()オブジェクトが文書についての情報を取得するために作られて使用してください。
  3. 情報文書を得るために、ベース名を使用します

日付を完全な日付と時刻を取得するために使用することができ、あなたは、単に書面による説明を得るのtoString()日付を使用するか、DateFormatの形式の日付を使用することができます。APIドキュメントのビュー日の場合は、多くの方法を見つけるだろう、もはや推奨されている、それは、関連する方法カレンダー置き換えを使用することをお勧めしません。

ログAPIの紹介

パッケージを持つjava.util.loggingするログ機能に関連するクラスおよびインタフェースを提供します。余分なコンフィギュレーションのロギング・コンポーネントません、あなたは、標準のJavaプラットフォームは、その長所である使用することができ、出発点は、保護されたとしてマークされたログのLoggerクラスLoggerクラスのコンストラクタを使用することで、クラスが同じjava.util.loggingパッケージではありません新しいダイレクトを作成することはできません、 Loggerインスタンスを取得するために、あなたはのgetLoggerロガー()静的メソッドを使用する必要があります。あなたがのgetLogger()を呼び出すときには、Loggerインスタンスは、名前空間に属し指定する必要があります。スペースに名前を付けます。「」区別のレベルとして。同じ名前空間の階層ロガー、その親ロガーの構成と同じ。Loggerは通常、どのクラスで、クラスの完全な名前と命名される名前空間を作っています。実際に簡単に言えば、ロガーは、情報を記録するための出発点であり、出力される情報は、フィルタロガーレベルを通して濾過しなければならず、その後、レベルおよびフィルタハンドラを介して濾過し、アクション、アクション・フォーマッタに情報をフォーマットし、出力ハンドラは責任があります。

ログレベルを指定します。

親が変更を加えていない場合はLoggerとHandlerは、に基づいて、レベルのフィルタ情報にデフォルト設定されます、ロガー設定のLoggerインスタンスがLogger.GLOBALで作られたLOGGERのこの例の構成ロガーインスタンス名の名前空間の構成設定はINFOです、ロガー例のgetParent()によって親ロガーインスタンスを取得するために、レベルの例も、getLevelを設定することにより得ることができます()。ロガーを処理ロガー情報は、構成設定の下にしませんでしたどのような場合には、すなわち、父のもとに広がっていくロガーのデフォルトのインスタンスを達成、階層は以上Logger.GLOBALと等しくなければなりませんLOGGER NAME名前空間Loggerインスタンスの設定レベル.INFOは、情報を出力することができます。

 

ハンドラとフォーマッタを使用します

MemoryHandlerの情報を一時的に指定されたターゲットハンドラにのみ情報を出力するまでバッファサイズよりもメモリバッファに格納され、ログ情報をフォーマットされていません。情報を出力するときStreamHandlerのOutputStreamのインスタンスは、ConsoleHandlerが自動的にOutputStreamをSystem.errのように指定して作成する場合、サブクラスは、フォーマット情報をフォーマッタに指定されるので、ログ情報がコンソールに表示され、自分自身の使用を指定することもできます。ログ出力は、パターン(柄)指定された文字列を使用することができるのFileHandler、ファイルの場所と名前を作成される際に作成したFileOutputStreamを使用しました。

カスタムハンドラ、フォーマッタ、フィルター

提供ハンドラjava.util.loggingパッケージの結果が要件を満たしていない場合は、フラッシュ()、クローズ()ハンドラをカスタマイズするには、それは情報のフィルタリングおよびフォーマット操作を検討することをお勧めします、)抽象メソッドは(公開作動し、Handlerクラスを継承することができます。

 

プロセスで解決コードのデバッグおよび問題

ノー

 

その他(知覚、思考、など)

ノー

参考資料

  • 「Javaプログラミング」

おすすめ

転載: blog.csdn.net/nemeziz/article/details/85042795