logging.

a written record of what happened, routed where you want it.

routes, not one global destination

logging is built from routes. each route pairs one event with one text channel, so the same server can send moderation records to a private staff channel and routine joins to a quieter activity channel. creating and changing routes requires manage guild. havoc also needs view channel, manage webhooks, and embed links in every destination because it delivers records through a webhook.

,log add #mod-log moderation
,log add #message-log message_delete
,log add #message-log message_edit
,log add #server-log member_join
/log add channel: #server-log event: member_leave

,log lists the routes already saved, including their channel, event, and colour. add one event at a time, or use all when a single channel really should receive every supported event.

warningkeep log channels private

records include member and channel ids, and moderation activity may expose staff decisions. deny ordinary members access to the destination before adding a route. havoc cannot deliver if a channel-level overwrite removes its webhook or embed permissions.

every accepted event name

event names use underscores. these are the complete names accepted by log add; all is also accepted as a catch-all route. message records identify the event and affected ids, but do not copy private message content into the logging embed.

::message_delete · message_edit
messages removed or edited, including uncached events when discord supplies enough metadata.
::member_join · member_leave · member_update
members arriving, leaving, or receiving a general account or guild-member update.
::nickname · role_changes · timeout
specific member changes split out from the broader member update stream.
::role_create · role_delete · role_update
server role lifecycle and changes.
::channel_create · channel_delete · channel_update
text, voice, category, and thread lifecycle events exposed by discord.
::ban · unban
guild bans being added or removed.
::invites · webhooks
invite lifecycle and webhook changes; invite codes and destination content are deliberately omitted.
::moderation
moderation cases produced by havoc commands.
::voice
voice-state changes, including a member moving between voice channels.
::configuration
changes to the server’s discord configuration.
::ai_watch
records emitted by havoc’s ai watch path.

member_update can be noisy because nickname, role, and timeout changes also produce their more specific event. route only the specific names when staff do not need the general stream.

adding, inspecting, and removing routes

logging route commands
commandwhat it doesneeds
/loglist every configured route and its colourmanage guild
/log add <channel> <event>save an event route and create or reuse havoc’s channel webhookmanage guild
/log remove <channel> <event>remove one exact channel and event pairingmanage guild
/log resetremove every logging route in the servermanage guild
/log ignore <member or channel>toggle one member or channel in the ignore listmanage guild
/log ignore listshow all ignored members and channelsmanage guild
/log color <channel> <event> <hex>set the embed colour for an existing routemanage guild
/log color list <channel>list route colours in one destinationmanage guild

removal is exact: removing message_edit from #message-log leaves that channel’s other routes alone. when its final route is removed, havoc removes the now-unused logging webhook. deleting a destination channel does not redirect its routes; remove the stale route and add the event to its replacement.

keeping expected noise out

an ignore entry suppresses an event when its metadata identifies that member or channel. use member ignores for trusted integration accounts that produce routine changes, and channel ignores for high-volume spaces whose edits and deletes are not useful to staff. the command is a toggle: running the same target again removes the ignore.

,log ignore @release-bot
,log ignore #bot-output
,log ignore list
noteignores depend on event metadata

an ignore is not a universal content filter. it applies when the event producer attaches the matching member or channel id. server-wide events without that target metadata are still delivered. check the ignore list before assuming a missing record is a delivery failure.

colouring event streams

colours belong to routes, not event names globally. that means moderation can be red in a staff channel while another route for the same event uses a neutral colour elsewhere. add the route first, then pass a hexadecimal colour without inventing a new event name.

,log color #mod-log moderation e74c3c
,log color #server-log member_join 57f287
,log color list #mod-log

if havoc says to add the route first, the channel and event pairing does not yet exist. inspect ,log, add that exact route, and then set its colour.

a practical multi-channel layout

moderation log

route moderation, ban, unban, and timeout here. limit viewing to staff who handle cases.

message log

route message_delete and message_edit here. this stream grows quickly, so separating it keeps cases readable.

member log

route joins, leaves, nicknames, and role changes here. add voice only if staff genuinely use that volume.

server changes

route role, channel, invite, webhook, and configuration events here for administrators reviewing structural changes.

  1. 01

    create private destinations

    set channel access first, including havoc’s webhook and embed permissions.

  2. 02

    add the narrow routes

    prefer explicit event names so each channel has a clear purpose.

  3. 03

    generate a safe test event

    edit a test message or nickname, then confirm the expected route receives one record.

  4. 04

    review after a busy day

    split noisy events and ignore only sources whose records are genuinely unactionable.

resetting without surprises

,log reset deletes all route configuration and removes logging webhooks that are no longer used. it does not merely restore colours, and there is no undo command. write down the current output of ,log before resetting if you intend to rebuild the same layout.

dangerreset affects the whole server

use log remove for a single bad route. reserve log reset for a deliberate full rebuild; events that happen before routes are added again will not be backfilled.

logging records explain what happened; they do not restore deleted content. for the short-lived deleted and edited message cache, see purging & cleanup.