Xcode8で出力される余計なシステムログを無くす方法

2016年10月4日(更新: 2016年10月4日)

Xcodeのアイコン

Xcode を8.0 (8A218a)にアップデートしてからというもの、アプリが出力しているものではないシステムのログが貯まるようになってしまいました。

Xcodeが出すシステムログ

例えば、以下のようなものが出力されます。

Xcodeで出る邪魔なログ

このログの中でアプリが出力しているのは Optional(20106391552) という部分だけで、他はアプリに直接関係の無いログです。

print などでアプリが出力している本当に知りたいログが、以下のようなシステムログに埋もれてしまって見にくくなっています。

subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0
subsystem: com.apple.UIKit, category: HIDEventIncoming, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0
subsystem: com.apple.BaseBoard, category: MachPort, enable_level: 1, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0
subsystem: com.apple.UIKit, category: StatusBar, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0
subsystem: com.apple.BackBoardServices.fence, category: App, enable_level: 1, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0

今回、このシステムログを出力しないようにする設定をしたので、その方法を紹介します。

システムログを出さなくするための手順

Xcodeの画面左上にあるスキーム選択部分をクリックします。

スキーム選択部分

すると、次のようなメニューが現れるので、Edit Scheme… を選択します。

Edit Scheme

現れる画面で、Run > Arguments > Environment ValuesOS_ACTIVITY_MODE という変数を追加して、その値を disable にします

OS_ACTIVITY_MODE disable

この設定を行なった後に実行して見ると、余計なログが綺麗になくなっていることが確認できます。

綺麗になったログ

おしまい

OS_ACTIVITY_MODE の値には、disable の他に debug, release, stream を設定できます。

例えば、デバッグ環境ではログを出すけれど、商用環境では出したく無いという場合は debug に設定するという感じです。

There are several variants to the basic os_trace API. First, there’s os_trace_debug, which you can use to output trace messages that only show up in debug mode. This can be helpful to reduce the amount of trace messages in production, so that you will only see the most meaningful ones, and don’t flood the limited ring buffer that’s used to storing those messages with less useful information.

Activity Tracing · objc.io

ログを消す目的であれば disable を使えば大丈夫です。

コメントを残す

メールアドレスが公開されることはありません。