This Documentation is Being Deprecated

This page is being phased out as part of our documentation reorganization.

Click this card to be redirected to the updated version with the most current information.

If you notice any discrepancies or areas needing improvement in the new documentation, please use the “Report an issue” button at the bottom of the page.

As a plugin developer, you may want to print arbitrary strings to logs during plugin processing for development or debugging purposes.

For this purpose, the plugin SDK implements a handler for Python’s standard logging library. By using this, you can output any string to both the standard output during remote debugging and the plugin daemon container logs (community edition only).

Sample

Import plugin_logger_handler and add it to your logger as a handler. Below is a sample code for a tool plugin.

from collections.abc import Generator
from typing import Any
from dify_plugin import Tool
from dify_plugin.entities.tool import ToolInvokeMessage


# Import logging and custom handler
import logging
from dify_plugin.config.logger_format import plugin_logger_handler

# Set up logging with the custom handler
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.addHandler(plugin_logger_handler)


class LoggerDemoTool(Tool):
    def _invoke(self, tool_parameters: dict[str, Any]) -> Generator[ToolInvokeMessage]:

        # Log messages with different severity levels
        logger.info("This is a INFO log message.")
        logger.warning("This is a WARNING log message.")
        logger.error("This is a ERROR log message.")

        yield self.create_text_message("Hello, Dify!")