Interface LogManagerFactory

All Superinterfaces:
Action
All Known Implementing Classes:
DbLogManagerFactory

public interface LogManagerFactory
extends Action
A log manager factory handles the creation of log managers and entity loggers. There is usually only one factory instance created for the entire BASE application. Implementations must be thread safe since the factory is used by multiple treads at the same time.

Each transaction that results in updates to the database are intercepted by the LoggingInterceptor which calls getLogManager(LogControl) to create a new log manager for the transaction.

For each created, modified or deleted item in the transaction, getEntityLogger(LogManager, Object) is called. If this method returns an object, EntityLogger.logChanges(LogManager, EntityDetails) is called and the rest is up to the actual implementation.

Version:
2.13
Author:
Nicklas
Last modified
$Date: 2012-08-06 15:20:43 +0200 (må, 06 aug 2012) $
  • Method Details

    • getLogManager

      LogManager getLogManager​(LogControl logControl)
      Get/create a log manager to log events in a given transaction. The log manager is used for this transaction only and is only used by a single thread in the core. The factory may re-use the same log manager in other (concurrent) transactions if the log manager implementation is thread safe.
      Parameters:
      logControl - A log controller with information about the current transaction
      Returns:
      A log manager object
    • isLoggable

      boolean isLoggable​(Object entity)
      Checks if changes to the given entity should be logged or not. If this method returns true, then getEntityLogger(LogManager, Object) mustn't return null if called with the same entity parameter.
      Parameters:
      entity - The entity to check
      Returns:
      TRUE if the changes to the entity should be logged, FALSE if not
    • getEntityLogger

      EntityLogger getEntityLogger​(LogManager logManager, Object entity)
      Get/create an entity logger for logging changes to the given entity. This method is called for each modified entity and is used within a single transaction only. The factory may re-use the same entity loggers in other transactions if the implementation is thread safe.
      Parameters:
      logManager - The log manager used in the current transaction
      entity - The entity to get a logger for
      Returns:
      An entity logger, or null if changes to the entity shouldn't be logged