(string)PostgreSQLは、stderr、csvlogおよびsyslogを含めて、サーバメッセージのログ取得に対し数種類の方法を提供します。Windowsでは、eventlogも同時に提供します。このパラメータを設定するには、コンマ区切りでお好みのログ出力先を記載します。デフォルトでは、ログはstderrのみに出力されます。このパラメータはpostgresql.confファイル、または、サーバのコマンドラインでのみ設定されます。csvlogがlog_destinationに含まれる場合、ログ項目はプログラムへの読み込みが簡便な「カンマ区切り値」書式(CSV)で出力されます。CSV書式のログ出力の利用を参照してください。CSV書式のログ出力を生成するためにはlogging_collectorを有効にする必要があります。注記log_destinationでsyslogオプションを使用できるようにするために、ほとんどのUnixシステムではシステムのsyslogデーモンの設定を変更しなければならないでしょう。PostgreSQLではログをLOCAL0からLOCAL7までのsyslogファシリティで記録することができます(syslog_facilityを参照してください)。ほとんどのプラットフォームのデフォルトのsyslog設定ではこれらのメッセージはすべて破棄されます。うまく動作させるためにsyslogデーモンの設定に以下のようなものを追加しなければならないでしょう。イベントログメッセージを手際良く表示できるよう、オペレーティングシステムでイベントソースとそのライブラリを登録しなければなりません。Logの登録を参照ください。(boolean)このパラメータはログ収集機構を有効にします。それはstderrに送られたログメッセージを捕捉し、ログファイルにリダイレクトするバックグラウンドプロセスです。この手法はsyslogへのログよりもしばしば有用です。メッセージの一部の種類がsyslogでは出力されない可能性があるためです。(一般的な例として、ダイナミックリンカのエラーメッセージがあり、その他の例としてarchive_commandのようなスクリプトにより生成されたエラーメッセージが挙げられます)。このパラメータはサーバ起動時のみ設定可能です。注記ログ収集機構を使用せずにstderrのログを取ることは可能です。ログメッセージはサーバのstderrが指し示すいかなる場所にも向かうだけです。その方法はログファイルを巡回させる都合のよい方法を提供しないので、ログ容量が小さい場合のみに適しています。同時に、ログ収集機構を使用しないいくつかのプラットフォームにおいては、ログ出力が失われたり、文字化けします。同一のログファイルに同時に書き込みを行うマルチプロセッサはそれぞれの出力を上書きできるからです。注記ログ収集機構はメッセージを決して失わないために設計されています。これは、極端に高い負荷の場合、サーバプロセスはコレクタが遅れをとった場合、追加のログメッセージを送信しようと試みる時に阻止される可能性があります。それとは対象的にsyslogは、もし書き込みができなかったときメッセージの廃棄を選びます。これらの場合にはいくつかのログメッセージを失うことになりますが、残ったシステムを阻止しません。(string)logging_collectorを有効と設定した場合、このパラメータはログファイルが作成されるディレクトリを確定します。ディレクトリは、絶対パス、もしくはデータベースクラスタのディレクトリに対する相対パスで指定することができます。このパラメータはpostgresql.confファイル、またはサーバコマンドラインからのみ設定可能です。デフォルトはpg_logです。(string)logging_collectorが有効な場合、このパラメータは作成されたログファイルのファイル名を設定します。値はstrftimeパターンとして扱われるため、%エスケープを使用して、時刻によって変動するファイル名を指定することができます。(時間帯に依存した%エスケープが存在する場合、log_timezoneで指定された時間帯で計算が行われます。仕様によく似ています。システムのstrftimeは直接使用されないので、プラットフォーム固有の(非標準)の拡張は動作しません。デフォルトはpostgresql-%Y-%m-%d_%H%M%S.logです。エスケープすることなくファイル名を指定する場合、ディスク全体を使い切ってしまうことを防止するためにログローテーションを行うユーティリティを使用することを計画しなければなりません。8.4より前のリリースのPostgreSQLでは、%エスケープがなければ、新しいログファイルの生成時のエポック時刻を付与しますが、これはもはや当てはまりません。CSV書式の出力がlog_destinationで有効な場合、タイムスタンプ付きのログファイル名に.csvを付与し、最終的なCSV書式出力用のファイル名が作成されます。(log_filenameが.logで終わる場合は後置詞が置き換えられます。)このパラメータはpostgresql.confか、サーバコマンドラインのみ設定可能です。(integer)Unixシステムにおいては、logging_collectorが有効になっている場合、このパラメータはログファイルのパーミッションを設定します。Windowsではこのパラメータは無視されます。umaskシステムコールで許容されるフォーマットで指定される数値モードであると期待されます。(慣例的な8進数フォーマットを使用する場合、番号は0(ゼロ)で始まらなければなりません。デフォルトのパーミッションは0600で、意味するところはサーバの所有者のみログファイルの読み書きが可能です。そのほか一般的に実用的な設定は0640で、所有者のグループはファイルを読み込めます。これらの設定を活用するにはlog_directoryがクラスタデータディレクトリの外部のどこかにあるファイルを格納できるように変更する必要があります。このパラメータはpostgresql.confファイル、またはサーバコマンドラインからのみ設定可能です。(integer)logging_collectorが有効な場合、このパラメータは個々のログファイルの最大寿命を決定します。ここで指定した時間(分単位)経過すると、新しいログファイルが生成されます。ゼロに設定することで、時間に基づいた新しいログファイルの生成は無効になります。このパラメータは、postgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。(integer)logging_collectorが有効な場合、このパラメータは個々のログファイルの最大容量を決定します。ここで指定したキロバイト分ログファイルに出力された後、新しいログファイルが生成されます。ゼロに設定することで、サイズに基づいた新しいログファイルの生成は無効になります。このパラメータはpostgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。(boolean)logging_collectorが有効な場合、このパラメータにより、PostgreSQLは既存の同名のファイルに追加するのではなく、そのファイルを切り詰める(上書きする)ようになります。切り詰めは時間を基にしたローテーションのために新規にファイルが開かれた時にのみ発生し、サーバ起動時やサイズを基にしたローテーションでは発生しません。偽の場合、全ての場合において既存のファイルは追記されます。この設定をpostgresql-%H.logのようなlog_filenameと組み合わせて使用すると、24個の時別のログファイルが生成され、それらは周期的に上書きされることになります。このパラメータはpostgresql.confファイル、または、サーバのコマンドラインで設定されます。server_log.Mon、server_log.Tue、等とし、そして自動的に前週のログを今週のログで上書きするには以下のように設定します。1440に設定します。1000000に設定します。log_filenameに%Mを含めると、サイズを元にしたローテーションが時間毎の始めのファイル名とは異なる名前のファイルを選択するようにできます。(enum)syslogへのログ取得が有効な場合、このパラメータはsyslogの「facility」が使われるように確定します。LOCAL0、LOCAL1、LOCAL2、LOCAL3、LOCAL4、LOCAL5、LOCAL6、LOCAL7の中から選んでください。デフォルトはLOCAL0です。使用しているシステムのsyslogデーモンの文書を同時に参照してください。このパラメータはpostgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。(string)syslogにログ取得が有効な場合、このパラメータはsyslogログ内のPostgreSQLメッセージを特定するのに使用するプログラム名を確定します。デフォルトはpostgresです。このパラメータは、postgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。(boolean)syslogにログを出力している場合で、これがオン(デフォルト)であると、各メッセージには([2]のような)増加する順序数が頭に追加されます。---」による出力の抑止が回避されます。近代的なsyslogの実装では、繰り返されるメッセージの抑止は設定変更できるので(たとえば、rsyslog)における$RepeatedMsgReduction)、この機能は必要ないかもしれません。繰り返されるメッセージを抑止したい場合には、これをオフにできます。このパラメータは、postgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。(boolean)syslogへのログ出力が有効な場合、このパラメータはメッセージがどのようにsyslogに送られるかを規定します。オンなら(デフォルト)、メッセージは行に分割され、長い行は、伝統的なsyslog実装のサイズ上限でである1024バイト以内に分割されます。オフならば、PostgreSQLサーバログメッセージは、そのままsyslogサービスに送られます。大きなサイズになるかもしれないメッセージにどう対応するかは、syslogサービス次第となります。syslogが最終的にテキストファイルにログを出力するのであれば、どちらに設定しても効果は同じです。設定値をオンにしておくのが最善です。多くのsyslogの実装では、長いメッセージを扱えないか、長いメッセージを扱うための特別な設定が必要だからです。syslogが最終的に他のメディアに書き込むのであれば、メッセージを論理的に一緒にしておくことが必要か、もしくは有用です。このパラメータは、postgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。logへのログ取得が有効になっていると、このパラメータはログ中のPostgreSQLメッセージを特定するのに使用されるプログラム名を決定します。デフォルトはPostgreSQLです。このパラメータは、postgresql.confファイル、または、サーバのコマンドラインでのみで設定されます。(enum)どのメッセージ階層をクライアントに送るかを管理します。WARNING、ERROR、FATAL、およびPANICです。それぞれの階層はそれに続く全ての階層を包含します。階層が後の方になるにつれ、より少ないメッセージが送られます。デフォルトはNOTICEです。ここでのLOGの優先順位がlog_min_messagesの場合と異なることに注意してください。(enum)どのメッセージ階層をサーバログに書き込むかを管理します。それぞれの階層はその下の全ての階層を含みます。階層を低くする程、より少ないメッセージがログに送られます。デフォルトはWARNINGです。ここでのLOGの優先順位がclient_min_messagesの場合と異なることに注意してください。スーパーユーザのみこの設定を変更できます。(enum)エラー条件の原因となったどのSQL文をサーバログに記録するかを制御します。設定したレベル以上のメッセージについては現在のSQL文がログに記録されます。有効な値は、DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、INFO、NOTICE、WARNING、ERROR、LOG、FATAL、PANICです。デフォルトはERRORです。エラー、ログメッセージ、致命的エラー、パニックを引き起こした文がログに記録されることを意味します。失敗した文の記録を実質的に無効にするには、このパラメータをPANICに設定してください。スーパーユーザのみがこのオプションを変更することができます。(integer)文の実行に少なくとも指定したミリ秒数かかった場合、それぞれの文の実行に要した時間をログに記録します。0に設定すれば、すべての文の実行時間が出力されます。-1(デフォルト)は、文実行時間の記録を無効にします。250msと設定した場合、250msもしくはそれ以上長くかかった全てのSQL文がログとして残ります。このパラメータを有効にすることにより、アプリケーションで最適化されていない問い合わせを追跡するのが便利になります。スーパーユーザのみこの設定を変更できます。拡張問い合わせプロトコルを使用するクライアントでは、Parse、Bind、Executeそれぞれの段階で要した時間が独立して記録されます。注記このオプションとlog_statementを一緒に使用する時、log_statementによってログされるテキスト文は、実行時間のログには重複されません。syslogを使用していなければ、プロセスIDとセッションIDを使用して、文メッセージと後の実行時間メッセージを関連付けできるように、log_line_prefixを使用してPIDまたはセッションIDをログに記録することを勧めます。表19.1「メッセージ深刻度レベル」で、PostgreSQLで使用されるメッセージ深刻度レベルを説明します。ログ出力がsyslogまたはWindowsのeventlogに送られる場合、この深刻度レベルは表で示すように変換されます。開発者が使用する連続的かつより詳細な情報を提供します。ユーザによって暗黙的に要求された情報を提供します。ユーザの補助になる情報を提供します。ユーザへの警告を提供します。現在のコマンドを中断させる原因となったエラーを報告します。管理者に関心のある情報を報告します。現在のセッションを中断させる原因となったエラーを報告します。全てのデータベースセッションを中断させる原因となったエラーを報告します。(string)application_nameはNAMEDATALEN(標準構築では64)文字以下の任意の文字列を指定できます。通常はサーバへの接続時にアプリケーションによって設定されます。pg_stat_activityビューに表示され、CSVログに含まれます。log_line_prefixパラメータにより通常のログ項目に含めることができます。application_nameには表示可能なASCII文字のみ使用することができ、それ以外の文字は疑問符(?)に置換されます。(boolean)これらのパラメータは生成される各種デバッグ出力を有効にします。設定すると実行された問い合わせそれぞれに対し、最終的な解析ツリー、問い合わせリライタの出力、実行計画を出力します。これらのメッセージはLOGメッセージレベルで出力されますので、デフォルトではサーバログに出力され、クライアントには渡されません。client_min_messages、log_min_messagesまたはその両方を調整することで変更することができます。デフォルトではこれらのパラメータは無効です。debug_print_planで生成されたメッセージを字下げします。設定されない場合の「コンパクト」形式よりもより見やすく、しかしより長いものとなります。デフォルトは有効です。(boolean)チェックポイントおよびリスタートポイントをサーバログに記録するようにします。書き出されたバッファ数や書き出しに要した時間など、いくつかの統計情報がこのログメッセージに含まれます。このパラメータはpostgresql.confファイルまたはサーバのコマンドラインでのみ設定可能です。デフォルトはoffです。(boolean)これにより、クライアント認証の成功終了などのサーバへの接続試行がログに残ります。スーパーユーザだけがセッション開始時にこのパラメータを変更でき、セッションが開始された後は変更できません。デフォルトはoffです。received」メッセージは必ずしも問題を示すものではありません。(boolean)セッションの終了をログします。ログ出力の情報はlog_connectionsと同様で、更にセッションの経過時間が追加されます。スーパーユーザだけがセッション開始時にこのパラメータを変更でき、セッションが開始された後は変更できません。デフォルトはoffです。(boolean)すべての完了した文について、その経過時間をログするようにします。デフォルトはoffです。スーパーユーザのみがこの設定を変更することができます。拡張問い合わせプロトコルを使用するクライアントでは、Parse、Bind、Executeそれぞれの段階で要した時間が独立して記録されます。注記このオプションとlog_min_duration_statementを0に設定する方法との違いは、log_min_duration_statementを超えた場合、テキスト版の問い合わせが強制的に出力されるのに対して、このオプションでは出力されないという点です。したがって、log_durationがon、かつ、log_min_duration_statementが正の値を持つ場合、すべての経過時間がログに記録されますが、閾値を超えた文のみがテキスト版の問い合わせが含められるようになります。この動作は、高負荷なインストレーションで統計情報を収集する際に有用です。(enum)ログ取得されるそれぞれのメッセージに対し、サーバログに書き込まれる詳細の量を制御します。有効な値は、TERSE、DEFAULT、およびVERBOSEで、それぞれは表示されるメッセージにより多くのフィールドを追加します。TERSEはDETAIL、HINT、QUERY、およびCONTEXTエラー情報を除外します。PostgreSQLエラーコードも参照)、および、ソースコードファイル名、関数名、そしてエラーを生成した行番号を含みます。スーパーユーザのみこの設定を変更できます。(boolean)デフォルトでは、接続ログメッセージは接続元ホストのIPアドレスのみを表示します。このパラメータを有効にすると、ホスト名もログに残るようになります。ホスト名解決方法の設定に依存しますが、これが無視できないほどの性能劣化を起こす可能性があることに注意してください。このパラメータはpostgresql.confファイル内またはサーバのコマンドラインでのみ設定可能です。(string)これは、各ログ行の先頭に出力するprintfの書式文字列です。%から始まる「エスケープシーケンス」は、後述の通りのステータス情報で置き換えられます。この他のエスケープは無視されます。他の文字はそのままログ行に出力されます。エスケープの中には、セッションプロセスによってのみ認識可能なものがあり、これらはメインサーバプロセスなどのバックグラウンドプロセスでは空文字として扱われます。状態情報はオプション名の%の後か前に数字を指定することにより、左寄せまた右寄せにすることができます。数字が負ならば状態情報を右側に空白を詰めて最小限の幅にし、正の値は左に空白を詰めます。ログファイルではパディングは人間の視認性を向上させるので有用です。このパラメータは、postgresql.confファイル、または、サーバのコマンドラインでのみで設定することができます。デフォルトは空文字列です。