In order to help make it easier to support third-party extensions, the UnboundID
      Server SDK provides methods for generating debug messages, writing messages to the
      server error logging subsystem, and generating administrative alerts.  All of
      these capabilities are exposed through the ServerContext class,
      through the following methods:
    
logMessage – This method may be used to write log messages to
        the server's error logging subsystem.  Both the log severity and the message
        text should be provided as arguments to this method.
        sendAlert – This method may be used to cause the server to
        generate administrative alert notifications.  There are actually two variants of
        this method:  one that takes only a severity and a message, and another that can
        be used to specify additional details like the alert type name and OID.
        debugEnabled – This method may be used to indicate whether
        debug logging is enabled in the server.  For potentially-expensive debugging
        operations (e.g., messages constructed by concatenating several components), it
        is recommended that you check to see whether debugging is enabled before paying
        the cost of constructing the message.
        debugCaught – This method may be used to indicate that an
        exception was caught within the extension itself and was either handled or
        re-thrown.  It is recommended that you use this method to record information
        about any exceptions caught in your extension code.
        debugThrown – This method may be used to indicate that your
        extension is about to throw a given exception.  If you are going to create and
        throw a new exception in your extension, then it may be useful to use this
        method to record it in the debug logger to protect against the event that
        whatever catches it doesn't debug the caught exception.
        debugError – This method may be used to write an arbitrary
        error message to the debug logging subsystem.
        debugWarning – This method may be used to write an arbitrary
        warning message to the debug logging subsystem.
        debugInfo – This method may be used to write an arbitrary
        informational message to the debug logging subsystem.
        debugVerbose – This method may be used to write an arbitrary
        message to the debug logging subsystem with a "verbose" severity (meaning that
        it will only be visible to administrators that have turned on the highest level
        of debugging output).
        
      As noted above, there are two variants of the sendAlert method that
      may be used to generate alert notifications.  The first one takes only a severity
      (INFO, WARNING, ERROR, or FATAL) and a message string, and it will use a generic
      alert type depending on that severity (user‑defined‑info,
      user‑defined‑warning, user‑defined‑error, or
      user‑defined‑fatal), each of which has its own predefined OID.
      However, if you want to use your own custom OID (e.g., for use in SNMP traps if
      the SNMP alert handler is enabled), then you will need to use the second variant
      which also requires that you provide an alert type name and OID.  When using this
      variant, you must be careful to ensure that each time you use a given alert type
      name, you must use the same numeric OID, and that OID must not be used for any
      other alert types.
    
Debug messages created by Server SDK extensions will be logged in the same way as other debug messages generated by other elements of the server. As such, simply enabling the default file-based debug log publisher will include debug messages generated by Server SDK extensions along with debug messages generated in other areas of the server.
      However, if you wish to see only those debug messages generated by Server SDK
      extensions, you can easily accomplish this with the Server SDK Extension Debug
      Logger.  This logger is configured so that by default, it will suppress all debug
      messages generated in the server, and it has a debug target which overrides this
      setting for only messages generated by Server SDK extensions (all messages
      generated by Server SDK extensions will ultimately be written by the
      com.unboundid.directory.sdk.impl.ServerContextImpl class in the
      server, so a debug target with a scope set to that class value may be used to
      customize the debug level that a debug logger will accept for messages generated
      by Server SDK extensions).  If you enable the Server SDK Extension Debug Logger,
      then all debug messages written by Server SDK extensions will be written to the
      logs/server‑sdk‑extension‑debug file. The Server
      SDK Extension Debug Logger can be enabled using the following command:
      
 dsconfig set-log-publisher-prop \
      --publisher-name "Server SDK Extension Debug Logger" \
      --set enabled:true
    
    
      The same mechanisms described above, using ServerContext, will also
      work when a third-party extension or script is loaded in the context of a command
      line tool. However, since this is outside of the Directory Server
      process, the logging subsystem will write messages to a special file under
      {server‑root}/logs/tools/{tool‑name}.debug.
      The logging verbosity and scope is configurable via a couple of special options on
      the command line.  See the ‑‑help‑debug argument
      on any of the command line tools for more information.