PostgreSQLの更新ログであるWAL(Write-Ahead Log)に、専用のファンクションを使用することで任意のログを挿入できます。そのログは、バックグラウンドワーカーで動作するデーモンプロセスによって、アーカイブファイルから自動的に外部ファイルに抽出されます。
これらのファンクションやデーモンプロセスは、PostgreSQLの拡張(EXTENSION)の形式で提供されます。
同一のトランザクション内で挿入したログは、連続したログシーケンスとして抽出されます。複数のログシーケンスがあった場合には、トランザクションの完了順に抽出されます。
トランザクションの完了とは、COMMITとROLLBACKのいずれかです。また、トランザクションが実行中であったときにインスタンスがクラッシュした場合には、スタンバイにおける昇格または、プライマリ単独のクラッシュリカバリの時点でROLLBACKしたものとみなされて、ユーザログの抽出対象になります。
インスタンスがクラッシュした場合には、COMMITしたトランザクションのユーザログは損失しませんが、ROLLBACKしたトランザクションおよび実行中のトランザクションの最新のユーザログの一部は失われるかもしれません。なぜなら、PostgreSQLはCOMMIT以外ではWALの書き込みを同期しないからです。