--- uid: Guides.Concepts.Logging title: Logging Events/Data --- # Logging in Discord.Net 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. [Events]: xref:Guides.Concepts.Events > [!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 a `Task.Run` so the gateway thread does not > become blocked while waiting for logging data to be written. ## Usage in Client(s) 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. [LogMessage]: xref:Discord.LogMessage ## Usage in Commands 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. [CommandService]: xref:Discord.Commands.CommandService [CommandException]: xref:Discord.Commands.CommandException ## Sample [!code-csharp[Logging Sample](samples/logging.cs)]