LogRecord API

LogRecord stores two types of logs.

This code executes an update operation and examines the log records for the Customer MBO:

int id = 101;
Customer result = Customer.findById(id);
result.setFname("newFname");
result.save();
result.submitPending();
SUP101DB.synchronize();
result = Customer.findById(id);
ObjectList logs = result.getLogRecords();
for (int i = 0; i < logs.count(); i  )
{
  com.sybase.persistence.LogRecord logRecord = 
    (com.sybase.persistence.LogRecord)logs.elementAt(i);
  // working with logRecord
}

The code in the log record is an HTTP status code. See Developer Guide: Android Object API Applications >Client Object API Usage >Exceptions > Handling Exceptions > HTTP Error Codes.

There is no logRecord generated for a successful operation replay. The Unwired Server only creates a logRecord when an operation fails.

This sample code shows how to find the corresponding MBO with the LogRecord and to delete the log record when a record is processed.

private void processLogRecords()
  {
    Query query = new Query();
    ObjectList logRecords = SUP101DB.getLogRecords(query);
    boolean callSync = false;
    for(int i = 0; i < logRecords.size(); ++i)
    {
      LogRecord log = (LogRecord)logRecords.elementAt(i);
      // log warning message
      Log.warning("log " + log.getComponent() + ":" + log.getEntityKey()
        + " code:" + log.getCode()
        + " msg:" + log.getMessage());
                 
      if (log.getComponent().equals("Customer"))
      {
        long surrogateKey = Long.parseLong(log.getEntityKey());
        Customer c = Customer.find(surrogateKey);
        if (c.isPending())
        {
          c.cancelPending();
        }
                              
         log.delete();
         log.submitPending();
         callSync = true;
        }
      }
              
      if (callSync)
      {
        SUP101DB.beginSynchronize(null, null);
      }
  }