iOS ロギングをカスタマイズする

iOS のロギングは IOSLogHandler.java によって処理されます。 これは java.util.logging.Handler をオーバーライドします。logging.properties リソースを追加することで、デフォルトとして設定できます。 LogManager で確認できます。

プログラムでロギング ハンドラを変更する

プログラムでロギング ハンドラを追加するには、Java で変更する場合と同じコードを使用します。

LogManager.getLogger("").addHandler(myHandler);

既存のハンドラを実行しない場合は、まず以下を使用してハンドラを削除します。

Logger logger = LogManager.getLogger("");
for (Handler h : logger.getHandlers()) {
  logger.removeHandler(h);
}

プロパティ ファイルを使用したロギング ハンドラの変更

  1. logging.properties ファイルを使用してデフォルトのロギング ハンドラを変更するには、そのハンドラを指定する必要があります。 (Java アプリケーションの場合と同じ):

    handlers=mycompany.mylogger.MyIOSLogHandler
    java.util.logging.ConsoleHandler.level=ALL
    

    このファイルには、読み込み時にその名前が使用されている限り、任意の名前を付けることができます。

  2. 次に、プロジェクトに logging.properties ファイルを iOS リソースとして追加します。

  3. Java アプリケーションとは異なり、J2ObjC アプリケーションではプロパティ ファイルを明示的に読み込む必要があります。

    static {
      // Fetch a logger in case the following leaves logging in a bad state, such
      // as not adding the logging.properties resource or using a different name.
      Logger log = Logger.getLogger("configLogger");
      try {
        InputStream loggingProperties = SomeClass.class.getResourceAsStream("logging.properties");
        LogManager.getLogManager().readConfiguration(loggingProperties);
      } catch (IOException exception) {
        log.log(Level.SEVERE, "Error in loading configuration", exception);
      }
    }