Chapter 16.  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 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.
Logging Subsystem and Related Methods Description
DB_LSN Log Sequence Numbers
DB_ENV->log_compare() Compare two Log Sequence Numbers
DB_ENV->log_archive() List log and database files
DB_ENV->log_file() Map Log Sequence Numbers to log files
DB_ENV->log_flush() Flush log records
DB_ENV->log_printf() Append informational message to the log
DB_ENV->log_put() Write a log record
DB_ENV->log_stat() Return log subsystem statistics
Logging Subsystem Cursors  
DB_ENV->log_cursor() Create a log cursor handle
DB_LOGC->close() Close a log cursor
DB_LOGC->get() Retrieve a log record
Logging Subsystem Configuration  
DB_ENV->log_set_config() Configure the logging subsystem
DB_ENV->set_lg_bsize() Set log buffer size
DB_ENV->set_lg_dir() Set the environment logging directory
DB_ENV->set_lg_filemode() Set log file mode
DB_ENV->set_lg_max() Set log file size
DB_ENV->set_lg_regionmax() Set logging region size