What pgaudit does
=================

1. Uses an ExecutorCheckPerms_hook to log DML commands.

2. Uses event triggers to support some DDL commands, depending on the
   server version and the availability of ddl_command_end triggers with
   pg_event_trigger_get_creation_commands().

3. Uses a ProcessUtility_hook to log DDL and utility commands that are
   not supported by event triggers or the object_access_hook.

4. Uses an object_access_hook to log function execution and, if event
   triggers are not available, also CREATE/ALTER commands.

5. Logs to the server log file with ereport().

What else pgaudit could do
==========================

1. Support logging to a separate log file and to a table.

2. Use a ClientAuthentication_hook to record login events.

3. Decode and log read/written column names in DML commands.

4. Use a logical decoding output plugin to also record column
   values in DML commands.

5. Use extensible reloptions (or a similar mechanism) to allow
   per-object auditing configuration.

6. Use pg_event_trigger_get_deletion_commands(), once it has been
   implemented, to provide deparsed DDL for DROP commands.
