Skip to content

Conversation

@nbarbier-amira
Copy link

Adds a C API for registering a log callback, allowing applications using the Triton C API to capture log messages programmatically.

Motivation

Applications embedding Triton often have their own logging infrastructure and need to integrate Triton's logs rather than having them go to stdout/stderr or a separate file. The current workarounds (parsing log files, named pipes) are clunky and lose metadata like log levels. See triton-inference-server/server#8304.

API

typedef void (*TRITONSERVER_LogCallbackFn_t)(
    TRITONSERVER_LogLevel level, const char* filename, int line,
    const char* msg, void* userp);

TRITONSERVER_Error* TRITONSERVER_ServerOptionsSetLogCallback(
    TRITONSERVER_ServerOptions* options,
    TRITONSERVER_LogCallbackFn_t callback_fn, 
    void* userp,
    bool replace_default_logger);

Usage

void my_callback(TRITONSERVER_LogLevel level, const char* file, 
                 int line, const char* msg, void* ctx) {
    // route to your logging system
}

TRITONSERVER_ServerOptionsSetLogCallback(opts, my_callback, NULL, true);

Setting replace_default_logger=true suppresses default stdout/stderr output. Setting it to false calls the callback in addition to normal logging.

Dependencies

Requires triton-inference-server/common#149 for the underlying Logger changes.

This adds a C API function to register a callback for receiving log
messages, enabling applications to integrate Triton logging with
external logging systems.

New API:
- TRITONSERVER_LogCallbackFn_t: Callback function type definition
- TRITONSERVER_ServerOptionsSetLogCallback(): Register/unregister callback

The callback receives:
- TRITONSERVER_LogLevel: The log level (INFO, WARN, ERROR)
- filename: Source file where the log originated
- line: Line number in the source file
- msg: The formatted log message
- userp: User-provided context pointer

The 'replace_default_logger' parameter controls whether the callback
replaces the default logging behavior or is called in addition to it.

Example usage (C):
  void my_log_callback(
      TRITONSERVER_LogLevel level, const char* filename, int line,
      const char* msg, void* userp) {
    // Forward to application logging system
  }

  TRITONSERVER_ServerOptionsSetLogCallback(
      options, my_log_callback, my_context, true);

Requires corresponding changes in triton-inference-server/common.
Resolves triton-inference-server/server#8304
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants