sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLでクエリをログに記録する方法

    • 構成ファイルの検索
      • データディレクトリパスを見つける
    • ログ出力を生成するためのPostgreSQLの構成
      • PostgreSQLサービスを再起動します
    • ログ生成の確認

    PostgreSQL内でのロギングの有効化は、いくつかの構成設定を変更してからサーバーを再起動することで非常に簡単になります。これらの設定は「メモリ内」で変更できるため、その特定のクライアントセッションに対してのみ一時的なログを有効にできますが、このチュートリアルでは、すべてのセッションと接続に対して反復ログファイルを永続的に作成するようにpostgresを構成する方法について説明します。

    構成ファイルの検索

    postgresql.confがどこにあるかわからない場合 設定ファイルが見つかりました。場所を見つける最も簡単な方法は、postgresクライアント(psql)に接続することです。 )そしてSHOW config_file;を発行します コマンド:

    postgres=# SHOW config_file;
                   config_file
    ------------------------------------------
     /etc/postgresql/9.3/main/postgresql.conf
    

    この場合、postgresql.confへのパスを確認できます。 このサーバーのファイルは/etc/postgresql/9.3/main/postgresql.confです。 。お気に入りのテキストエディタでそのファイルを開くだけで、設定の変更を開始できます:

    $ nano /etc/postgresql/9.3/main/postgresql.conf
    
    データディレクトリパスを見つける

    dataのパスを確認することもお勧めします postgresインストール用のディレクトリ。これは後で役立ちます。パスの取得は、別の単純なSHOWの問題です。 ステートメント:

    postgres=# SHOW data_directory;
            data_directory
    ------------------------------
     /var/lib/postgresql/9.3/main
    

    一部のインストールでは、構成ファイルとdata ディレクトリは同じパスに沿っていますが、他のディレクトリ(この例のように)では異なります。いずれにせよ、このdataをコピーしてください 後で使用するためのディレクトリパス。

    ログ出力を生成するためのPostgreSQLの構成

    postgresql.confを使用 ファイルを開き、ERROR REPORTING AND LOGGINGまで下にスクロールします セクションを開くと、コメントアウトされたいくつかの構成オプションが表示される可能性があります。これらの設定の中で最も重要なのはlog_destinationです。 およびlogging_collector 。以下は推奨設定ですが、必要に応じて自由に変更してください。

    #------------------------------------------------------------------------------
    # ERROR REPORTING AND LOGGING
    #------------------------------------------------------------------------------
    
    # - Where to Log -
    
    log_destination = 'csvlog'              # Valid values are combinations of
                                            # stderr, csvlog, syslog, and eventlog,
                                            # depending on platform.  csvlog
                                            # requires logging_collector to be on.
    
    # This is used when logging to stderr:
    logging_collector = on          # Enable capturing of stderr and csvlog
                                            # into log files. Required to be on for
                                            # csvlogs.
                                            # (change requires restart)
    
    # These are only used if logging_collector is on:
    log_directory = 'pg_log'                # directory where log files are written,
                                            # can be absolute or relative to PGDATA
    log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
                                            # can include strftime() escapes
    

    ここでは、postgresにCSVでログを生成するように指示しています。 フォーマットしてpg_logに出力します ディレクトリ(data内 ディレクトリ)。 log_filenameのコメントも解除しました ログファイルのタイムスタンプを含む適切な名前を生成するように設定します。

    これらすべての設定の詳細については、official documentationをご覧ください。 。

    PostgreSQLサービスを再起動します

    最後のステップは、PostgreSQLサービスを再起動して、これらの設定、特にlogging_collectorを実行することです。 、有効になります。 postgresの再起動の実行はシステムごとに異なりますが、通常、UNIXシステムの場合、コマンドは次のようになります。

    $ service postgresql restart
     * Restarting PostgreSQL 9.3 database server                               [ OK ]
    
    ログ生成の確認

    システムが再起動されると、ロギングはすぐに開始されます。これを確実に行うには、data/pg_logに移動します postgresインストールのディレクトリ。 dataを取得したことを忘れないでください 以前のディレクトリパスなので、/pg_logを追加してそのディレクトリに移動するだけです。 最後にログディレクトリに移動します:

    $ cd /var/lib/postgresql/9.3/main/pg_log
    

    ここでファイルを一覧表示すると、前回のサービスの再起動後にログファイルが作成されていることがわかります。

    $ ls -l
    -rw------- 1 postgres postgres 935 Apr 13 20:30 postgresql-2016-04-13_203022.csv
    

    そこにあります。自動生成されたログファイルは、いくつかの構成設定を変更するだけでPostgreSQLで有効になります。


    1. MySQL外部キーエラー1005errno150外部キーとしての主キー

    2. Oracle-完全更新中もマテリアライズド・ビューにアクセスできます。これはどのように作動しますか?

    3. 一定時間後にMySQLレコードを削除する方法

    4. 他のpostgresqlスキーマにデータフレームを書き込むパンダ