優先度と分類付きのシンプルなログメッセージを扱う. メッセージの重要度は, メッセージのSDL_LogPriorityで表す. メッセージの分類は, メッセージのSDL_LogCategoryで表す. 全ての分類には最低優先度が設定されており, メッセージはその分類の最低優先度以上の場合のみ出力される.
SDL自身のログはデフォルトの優先度未満のため, デフォルトでは出力されない.
ログの詳細さはプログラム内でSDL_SetLogPriority()またはSDL_SetHint(SDL_HINT_LOGGING, ...)を使用するか, 環境変数"SDL_LOGGING"で変更できる. 環境変数はコンマで区切った 分類=レベル でSDLアプリケーションのデフォルトログレベルを設定する.
分類には番号, または"app", "error", "assert", "system", "audio", "video", "render", "input", "test"の1つ, またはその他の分類を表す * を指定できる.
レベルは数値のレベル, または"trace", "verbose", "debug", "info", "warn", "error", "critical"の1つ, またはその分類を無効化する"quiet"を指定できる.
全分類のログレベルを設定したい場合は, 分類を省略できる.
ヒントが設定されていない場合, デフォルトのログレベル環境変数は次の様になっている:app=info,assert=warn,test=verbose,*=error
各環境のメッセージの出力先は次の通りである:
関数が自動的に付けるため, メッセージの終端に改行(\n)を付ける必要はない. 複数の環境での動作を考慮するため, 1回の関数呼び出しで複数行を出力したい場合でもメッセージに改行をつけるべきではない. 環境固有の異常な動作をする可能性がある. 複数のメッセージを改行するのではなく, 1回の呼び出しは1行とすること.
それぞれのログ呼び出しはアトミックで, 複数のスレッドからログ出力した場合でもログが途中で途切れることはない.