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

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

プログラムによるロギング ハンドラの変更

プログラムでロギング ハンドラを追加するには、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);
      }
    }