Discord.Net's clients provide a log event that all messages will be
dispatched over.
For more information about events in Discord.Net, see the Events
section.
[!WARNING]
Due to the nature of Discord.Net's event system, all log event
handlers will be executed synchronously on the gateway thread. If your
log output will be dumped to a Web API (e.g., Sentry), you are advised
to wrap your output in aTask.Run
so the gateway thread does not
become blocked while waiting for logging data to be written.
To receive log events, simply hook the Discord client's @Discord.Rest.BaseDiscordClient.Log
to a Task
with a single parameter of type LogMessage.
It is recommended that you use an established function instead of a
lambda for handling logs, because most addons accept a reference
to a logging function to write their own messages.
Discord.Net's CommandService also provides a @Discord.Commands.CommandService.Log
event, identical in signature to other log events.
Data logged through this event is typically coupled with a
CommandException, where information about the command's context
and error can be found and handled.
[!code-csharpLogging Sample]