Chapter 19. The Logging Subsystem
Introduction to the logging subsystem
The Logging subsystem is the logging facility used by Berkeley DB. It is largely Berkeley DB-specific, although it is potentially useful outside of the Berkeley DB package for applications wanting write-ahead logging support. Applications wanting to use the log for purposes other than logging file modifications based on a set of open file descriptors will almost certainly need to make source code modifications to the Berkeley DB code base.
A log can be shared by any number of threads of control. The DB_ENV->open() method is used to open a log. When the log is no longer in use, it should be closed using the DB_ENV->close() method.
Individual log entries are identified by log sequence numbers. Log sequence numbers are stored in an opaque object, an DB_LSN.
The DB_ENV->log_cursor() method is used to allocate a log cursor. Log cursors have two methods: DB_LOGC->get() method to retrieve log records from the log, and DB_LOGC->close() method to destroy the cursor.
There are additional methods for integrating the log subsystem with a transaction processing system:
Flushes the log up to a particular log sequence number.
Allows applications to compare any two log sequence numbers.
Maps a log sequence number to the specific log file that contains it.
Returns various sets of log filenames. These methods are used for database administration; for example, to determine if log files may safely be removed from the system.
The display db_stat utility used the DB_ENV->log_stat() method to display statistics about the log.
The log meta-information (but not the log files themselves) may be removed using the DB_ENV->remove() method.
For more information on the logging subsystem methods, see the Logging Subsystem and Related Methods section in the Berkeley DB C API Reference Guide.