The Logs tab appears only with the Access logs and annotations permission.The Owner, Admins, Editors, and the app’s creator have the permission by default. Other members can hold it through a custom role, or per app through an individual permission setting.
What Gets Logged
Logs capture real usage from every channel: the web app, the API, and apps opened from the WEB APPS list on Home. For Workflow apps, runs started by triggers are logged too. End-user feedback (thumbs up/down and comments) is stored with the messages it refers to. Test sessions from the app editor are excluded for Chatflow and Workflow apps (Preview and Test Run). For other app types they are listed, under the team member’s account.Browse Logs
Each row is one conversation or one run. Most columns explain themselves, but a few deserve context:- Title is generated from the conversation’s first message.
- End User or Account shows a session ID for web app and API usage, or the team member’s account for usage inside Dify.
- User Rate counts end users’ likes and dislikes; Op. Rate (operator rate) counts your team’s. Both aggregate across the whole conversation.
- Trigger By (Workflow apps) shows what started each run:
- WebApp: The published web app, or a call through the API
- Webhook: A webhook trigger receiving a request
- Schedule: A schedule trigger reaching its scheduled time
- Integration: An event from a connected integration
Inspect a Conversation
Click a row to open the full message thread. When you hover over an answer, you can:- See its token spend and latency.
- Open the log behind it: the raw prompt, an Agent app’s tool iterations, or a Chatflow message’s node-by-node trace.
- Rate the answer as team feedback; a dislike can carry a comment explaining what went wrong. Team ratings fill the Op. Rate column, separate from end-user feedback.
- Add an annotation pairing the question with an improved reply. See Annotation System for how annotated replies take effect.
Inspect a Run
For Workflow apps, click a run to open its result, its inputs and outputs with status and token totals, and a node-by-node trace that pinpoints where a run failed or slowed down. To reproduce an issue, click Test With Params: the workflow re-runs in the editor with this run’s inputs.
Log Retention
Logs are retained indefinitely by default. To clean up old logs on a schedule:- Workflow run logs: enable
workerBeat.enableWorkflowLogCleanupin your Helm values (it setsWORKFLOW_LOG_CLEANUP_ENABLED), and setWORKFLOW_LOG_RETENTION_DAYSto the number of days to keep (default 30) throughextraEnv. See Workflow Log Cleanup for the full set of variables. - Conversation messages: set
ENABLE_CLEAN_MESSAGEStotrueandSANDBOX_EXPIRED_RECORDS_RETENTION_DAYSto the number of days to keep (default 30) throughextraEnv. See Scheduled Tasks Configuration.