Chapter 17.  The Logging Subsystem

Table of Contents

Introduction to the logging subsystem
Configuring logging
Log file limits

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.