### Berkeley DB Reference Guide: Logging Subsystem |

### Berkeley DB and logging

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, a 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:

DB_ENV->log_flush
  Flushes the log up to a particular log sequence number.
log_compare
  Allows applications to compare any two log sequence numbers.
DB_ENV->log_file
  Maps a log sequence number to the specific log file that contains it.
DB_ENV->log_archive
  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.
DB_ENV->log_stat
  The display db_stat utility uses the DB_ENV->log_stat method to display statistics about the log.
DB_ENV->remove
  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
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->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

Copyright (c) 1996-2005 Sleepycat Software, Inc. - All rights reserved.