# Logging

Imagine SDK uses [standard Python logging](https://docs.python.org/3/howto/logging.html)
to help users debug their application. The logger can be configured using the logger
name `imagine`. If the logging level is set
to [`DEBUG`](https://docs.python.org/3/howto/logging.html#logging-levels), the library
will log the HTTP requests performed to the Imagine API.

The following snippet exemplifies one of the many ways users can set their logging to
generate debug messages and print them to the console.

```python
import logging.config

from imagine import ChatMessage, ImagineClient

logging.config.dictConfig(
    {
        "version": 1,
        "disable_existing_loggers": False,
        "formatters": {
            "standard": {
                "format": "%(name)s: %(message)s",
            },
        },
        "handlers": {
            "console": {
                "class": "logging.StreamHandler",
                "level": "DEBUG",
                "formatter": "standard",
            },
        },
        "loggers": {
            "imagine": {
                "handlers": ["console"],
                "level": "DEBUG",
                "propagate": False,
            },
        },
        "root": {
            "handlers": ["console"],
            "level": "INFO",
        },
    }
)

client = ImagineClient()

chat_response = client.chat(
    messages=[ChatMessage(role="user", content="What is the best Spanish cheese?")],
)  # This method call will generate a logging record

print(chat_response.first_content)
```

Alternatively, simple plain text logging to `stdout` can be enabled by setting the
environment variable `IMAGINE_DEBUG` to a truthy value like `1`, `true`, `yes`, etc. or
passing `debug=True` when creating an instance of the client class. This is an examples
of the latter:


```python
from imagine import ChatMessage, ImagineClient

client = ImagineClient(debug=True)

chat_response = client.chat(
    messages=[ChatMessage(role="user", content="What is the best Spanish cheese?")],
)  # This method call will generate a logging record

print(chat_response.first_content)
```
