Handling MobiLink server errors with .NET

When scanning the log is not sufficient, you can monitor your applications programmatically. For example, you can send messages of a certain type in an email.

You can write methods that are passed a class representing every error or warning message that is printed to the log. This may help you monitor and audit a MobiLink server.

The following code installs a listener for all error messages and prints the information to a StreamWriter.

class TestLogListener {
  public TestLogListener( StreamWriter output_file ) {
    _output_file    = output_file;
  }
  public void errCallback( ServerContext sc, LogMessage lm ) {
    string type;
    string user;
    if( lm.Type==LogMessage.MessageType.ERROR ) {
      type = "ERROR";
    } else if( lm.Type==LogMessage.MessageType.WARNING ) {
      type = "WARNING";
    } else {
      type = "INVALID TYPE!!";
    }
    if( lm.User == null ) {
      user = "null";
    } else {
      user = lm.User;
    }
    _output_file.WriteLine( "Caught msg type=" + type +
      " user=" + user +
      " text=" + lm.Text );
    _output_file.Flush();
  }
  StreamWriter _output_file;
}

The following code registers the TestLogListener. Call this code from somewhere that has access to the ServerContext such as a class constructor or synchronization script.

// ServerContext serv_context;
TestLogListener etll = new TestLogListener(log_listener_file);
serv_context.ErrorListener += new LogCallback(etll.errCallback);
See also