> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ones1ght.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ログの取得方法

> SDK の開発時にログを確認する方法をご案内します。

## iOS

<Tabs>
  <Tab title="Xcode でローカルビルドできる場合">
    <Steps>
      <Step title="logLevel 設定の確認">
        SDK の初期化時にログのコールバックが登録されているか確認します。

        ```swift theme={null}
        OneS1ght.onDebugLog = { level, line in print("[OneS1ght][\(level)] \(line)") }
        ```

        <Warning>
          `initialize` **より先に**登録することで、初期化段階のログが残ります。
        </Warning>

        レベルで絞り込めます。`LogLevel` は `Comparable` です。

        ```swift theme={null}
        OneS1ght.onDebugLog = { level, line in
            guard level >= .warn else { return }      // 確認が必要なものだけ
            print("[OneS1ght][\(level)] \(line)")
        }
        ```

        <Note>
          `0.1.12` より前は文字列だけが渡されていました — `{ line in ... }`。
          [移行ガイド](/sdk/integration/ios/migration-guide) をご確認ください。
        </Note>
      </Step>

      <Step title="端末の接続">
        iOS 端末を Mac に接続します。
      </Step>

      <Step title="アプリのビルドと実行">
        Xcode でアプリをビルドし、接続した端末にインストールして実行します。
      </Step>

      <Step title="コンソールのフィルター設定">
        Xcode 下部の **Console** タブを開きます。
        右下のフィルター入力欄に `OneS1ght` と入力し、OneS1ght のログだけが表示されるように設定します。
      </Step>

      <Step title="事象の再現">
        問題が発生する状況を再現します。
      </Step>

      <Step title="ログの保存">
        約 **30 秒間**、アプリをフォアグラウンドのまま維持します。
        Console のログをすべて選択してコピーし、テキストエディタに貼り付けてファイルとして保存します。
      </Step>
    </Steps>
  </Tab>

  <Tab title="Console アプリを使用する場合">
    iOS 端末に Xcode から直接ビルドできない場合は、Mac の **Console** アプリでログを取得できます。

    <Steps>
      <Step title="端末の接続">
        iOS 端末を Mac に接続します。
      </Step>

      <Step title="Console アプリを開く">
        Spotlight 検索（`Cmd + Space`）で「Console」を検索してアプリを起動します。
      </Step>

      <Step title="ログストリームの開始">
        Console アプリ左サイドバーのデバイス一覧から、接続した iOS 端末を選択します。
        上部の検索・フィルター入力欄に **アプリのバンドル ID** を入力してフィルタリングします。
      </Step>

      <Step title="ログの初期化">
        以前のログを消すため、Console ウィンドウを右クリックして **Clear Console** を選択します。
      </Step>

      <Step title="事象の再現">
        問題が発生する状況を再現します。
      </Step>

      <Step title="ログの保存">
        約 **30 秒間**、アプリをフォアグラウンドのまま維持します。
        表示されたログをすべて選択してコピーし、テキストエディタに貼り付けてファイルとして保存します。
      </Step>
    </Steps>

    <Warning>
      Console アプリは `print` で出力した行を取得できない場合があります。端末でのみ再現する問題を確認するときは、
      `onDebugLog` の中で `os.Logger` にも出力しておくと確実です。

      ```swift theme={null}
      import os
      let log = Logger(subsystem: "com.yourcompany.yourapp", category: "OneS1ght")
      OneS1ght.onDebugLog = { level, line in
          switch level {
          case .error: log.error("\(line, privacy: .public)")
          case .warn:  log.warning("\(line, privacy: .public)")
          default:     log.info("\(line, privacy: .public)")
          }
      }
      ```

      Console アプリのフィルターには subsystem（`com.yourcompany.yourapp`）を入力してください。
    </Warning>
  </Tab>
</Tabs>

### ログレベル

| レベル      | 意味                                    |
| -------- | ------------------------------------- |
| `.log`   | 流れの記録 — 普段は読まなくて構いません                 |
| `.info`  | 知っておくと役立つこと — 正常ですが目に留まると助かります        |
| `.warn`  | 確認が必要 — 不具合ではありませんが、このままでは期待どおりに動きません |
| `.error` | 不具合 — 直さないとその機能が動きません                 |

不具合をご連絡いただく際は、**レベルで絞らずすべて**お送りください。不具合の直前の流れが
原因を指していることが多くあります。

## Android

**準備中です。**
