From 837386c1ac81e52dd37a273f009146c0b7dfe035 Mon Sep 17 00:00:00 2001 From: Matthew Hand Date: Tue, 5 Nov 2024 19:51:15 +0000 Subject: [PATCH] Add Logging.md changes from feature-nginx-combined --- .../advanced-topics/Logging.md | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 docs/getting-started/advanced-topics/Logging.md diff --git a/docs/getting-started/advanced-topics/Logging.md b/docs/getting-started/advanced-topics/Logging.md new file mode 100644 index 0000000..ad91982 --- /dev/null +++ b/docs/getting-started/advanced-topics/Logging.md @@ -0,0 +1,63 @@ +--- +sidebar_position: 5 +title: "📜 Open WebUI Logging" +--- + +## Browser Client Logging ## + +Client logging generally occurs via [JavaScript](https://developer.mozilla.org/en-US/docs/Web/API/console/log_static) `console.log()` and can be accessed using the built-in browser-specific developer tools: +* Blink + * [Chrome/Chromium](https://developer.chrome.com/docs/devtools/) + * [Edge](https://learn.microsoft.com/en-us/microsoft-edge/devtools-guide-chromium/overview) +* Gecko + * [Firefox](https://firefox-source-docs.mozilla.org/devtools-user/) +* WebKit + * [Safari](https://developer.apple.com/safari/tools/) + +## Application Server/Backend Logging ## + +Logging is an ongoing work-in-progress but some level of control is available using environment variables. [Python Logging](https://docs.python.org/3/howto/logging.html) `log()` and `print()` statements send information to the console. The default level is `INFO`. Ideally, sensitive data will only be exposed with `DEBUG` level. + +### Logging Levels ### + +The following [logging levels](https://docs.python.org/3/howto/logging.html#logging-levels) values are supported: + +| Level | Numeric value | +| ---------- | ------------- | +| `CRITICAL` | 50 | +| `ERROR` | 40 | +| `WARNING` | 30 | +| `INFO` | 20 | +| `DEBUG` | 10 | +| `NOTSET` | 0 | + +### Global ### + +The default global log level of `INFO` can be overridden with the `GLOBAL_LOG_LEVEL` environment variable. When set, this executes a [basicConfig](https://docs.python.org/3/library/logging.html#logging.basicConfig) statement with the `force` argument set to *True* within `config.py`. This results in reconfiguration of all attached loggers: +> _If this keyword argument is specified as true, any existing handlers attached to the root logger are removed and closed, before carrying out the configuration as specified by the other arguments._ + +The stream uses standard output (`sys.stdout`). In addition to all Open-WebUI `log()` statements, this also affects any imported Python modules that use the Python Logging module `basicConfig` mechanism including [urllib](https://docs.python.org/3/library/urllib.html). + +For example, to set `DEBUG` logging level as a Docker parameter use: +``` +--env GLOBAL_LOG_LEVEL="DEBUG" +``` + +### App/Backend ### + +Some level of granularity is possible using any of the following combination of variables. Note that `basicConfig` `force` isn't presently used so these statements may only affect Open-WebUI logging and not 3rd party modules. + +| Environment Variable | App/Backend | +| -------------------- | ----------------------------------------------------------------- | +| `AUDIO_LOG_LEVEL` | Audio transcription using faster-whisper, TTS etc. | +| `COMFYUI_LOG_LEVEL` | ComfyUI integration handling | +| `CONFIG_LOG_LEVEL` | Configuration handling | +| `DB_LOG_LEVEL` | Internal Peewee Database | +| `IMAGES_LOG_LEVEL` | AUTOMATIC1111 stable diffusion image generation | +| `LITELLM_LOG_LEVEL` | LiteLLM proxy | +| `MAIN_LOG_LEVEL` | Main (root) execution | +| `MODELS_LOG_LEVEL` | LLM model interaction, authentication, etc. | +| `OLLAMA_LOG_LEVEL` | Ollama backend interaction | +| `OPENAI_LOG_LEVEL` | OpenAI interaction | +| `RAG_LOG_LEVEL` | Retrieval-Augmented Generation using Chroma/Sentence-Transformers | +| `WEBHOOK_LOG_LEVEL` | Authentication webhook extended logging |