Logpublic class Log extends Object The Log class provides operations that control the physical log
as an entity versus the individual LogFiles that form the log. It supports
the initialisation, opening and termination of the log. Different physical
logs can be placed on the system with only minor changes to the methods
contained in this class. |
Fields Summary |
---|
private LogControl | logControlA reference to the LogControl object. | private String | logPathThe log path. | static Logger | _logger |
Constructors Summary |
---|
Log()Default Log constructor.
// We need to ensure that messaging is initialised as this may be called
// prior to SOMTR_Init.
// Initialise the instance variables.
logControl = null;
// Get the log path. If it is not set, or blank, then set it to the current
// directory.
if( logPath == null ) {
int[] result = new int[1];
logPath = Configuration.getDirectory(Configuration.LOG_DIRECTORY,
Configuration.JTS_SUBDIRECTORY,
result);
// If a default was used, display a message.
if( result[0] == Configuration.DEFAULT_USED ||
result[0] == Configuration.DEFAULT_INVALID ) {
// In the case where the SOMBASE default is used, only display a message
// if an invalid value was specified in the environment value.
if( logPath.length() > 0 ) {
_logger.log(Level.WARNING,"jts.invalid_log_path",logPath);
}
// In the case where the SOMBASE default is invalid, the value returned is
// the invalid default. We then default to the current directory.
if( result[0] == Configuration.DEFAULT_INVALID ) {
_logger.log(Level.WARNING,"jts.invalid_default_log_path");
logPath = "."/*#Frozen*/;
}
}
}
| Log(String logPath)
logControl = null;
this.logPath = logPath;
|
Methods Summary |
---|
static boolean | checkFileExists(java.lang.String serverName)Determines whether a log file exists for the given server.
This method may be used without initialising the Log object to determine
whether recovery should be performed, without initialising the log or the OTS.
boolean exists = false;
// Check whether the file exists.
if( serverName != null ) {
String logPath = null;
int[] result = new int[1];
logPath = Configuration.getDirectory(Configuration.LOG_DIRECTORY,
Configuration.JTS_SUBDIRECTORY,
result);
// If a default was used, display a message.
if( result[0] == Configuration.DEFAULT_USED ||
result[0] == Configuration.DEFAULT_INVALID ) {
// In the case where the SOMBASE default is used, only display a message
// if an invalid value was specified in the environment value.
if( logPath.length() > 0 ) {
_logger.log(Level.WARNING,"jts.invalid_log_path",logPath);
}
// In the case where the SOMBASE default is invalid, the value returned is
// the invalid default. We then default to the current directory.
if( result[0] == Configuration.DEFAULT_INVALID ) {
_logger.log(Level.WARNING,"jts.invalid_default_log_path");
logPath = "."/*#Frozen*/;
}
}
exists = LogControl.checkFileExists(serverName,logPath);
}
return exists;
| void | dump()Dumps the state of the object.
//! somtrDUMP_OBJECT_HEADER;
// Dump all of the instance variables in the LogFile object, without going
// any further down object references.
logControl.dump();
| boolean | initialise()Initialises the log.
boolean result = true;
// Call the initialize operation for the log
logControl = new LogControl();
logControl.initLog(false,false,logPath);
return result;
| LogFile | open(java.lang.String serverName, LogUpcallTarget upcall)Opens the log for the given server.
The given LogSOS object, if any, will be called in the event of the log
going short-on-storage. A LogFile object reference is returned that is used
for operations on the specific portion of the log.
LogFile logFile = null;
boolean[] newLog = new boolean[1]; newLog[0] = true;
// Open the log using the server name.
try {
LogHandle handle = logControl.openFile(serverName,upcall,null,newLog);
// Create a new LogFile object with the handle to represent the open log.
logFile = new LogFile(handle);
}
// If the log open failed, report the error.
catch( LogException le ) {
_logger.log(Level.SEVERE,"jts.log_error",le.toString());
String msg = LogFormatter.getLocalizedMessage(_logger,"jts.log_error",
new java.lang.Object[] {le.toString()});
throw new org.omg.CORBA.INTERNAL(msg);
}
return logFile;
| boolean | terminate()Terminates the log.
boolean result = true;
// No special action needed after the close for the logger
return result;
|
|