Browse Source

Revamp docs page on logging

tags/1.0.0-rc2
Christopher F 8 years ago
parent
commit
b3c6a06500
6 changed files with 101 additions and 35 deletions
  1. +35
    -5
      docs/CONTRIBUTING.md
  2. +2
    -1
      docs/docfx.json
  3. +1
    -1
      docs/guides/installing.md
  4. +5
    -2
      docs/guides/intro.md
  5. +37
    -6
      docs/guides/logging.md
  6. +21
    -20
      docs/guides/samples/logging.cs

+ 35
- 5
docs/CONTRIBUTING.md View File

@@ -1,15 +1,45 @@
# Contributing to Docs # Contributing to Docs


I don't really have any strict conditions for writing documentation, but just keep these few guidelines in mind:
I don't really have any strict conditions for writing documentation,
but just keep these few guidelines in mind:


* Keep code samples in the `guides/samples` folder * Keep code samples in the `guides/samples` folder
* When referencing an object in the API, link to it's page in the API documentation.
* When referencing an object in the API, link to it's page in the
API documentation.
* Documentation should be written in clear and proper English* * Documentation should be written in clear and proper English*


\* If anyone is interested in translating documentation into other languages, please open an issue or contact me on Discord (`foxbot#0282`).
\* If anyone is interested in translating documentation into other
languages, please open an issue or contact me on
Discord (`foxbot#0282`).

### Layout

Documentation should be written in a FAQ/Wiki style format.

Recommended reads:

* http://docs.microsoft.com
* http://flask.pocoo.org/docs/0.12/

Style consistencies:

* Use a ruler set at 70 characters
* Links should use long syntax

Example of long link syntax:

```
Please consult the [API Documentation] for more information.

[API Documentation]: xref:System.String
```


### Compiling ### Compiling


Documentation is compiled into a static site using [DocFx](https://dotnet.github.io/docfx/). We currently use version 2.8
Documentation is compiled into a static site using [DocFx].
We currently use the most recent build off the dev branch.

After making changes, compile your changes into the static site with
`docfx`. You can also view your changes live with `docfx --serve`.


After making changes, compile your changes into the static site with `docfx`. You can also view your changes live with `docfx --serve`.
[DocFx]: https://dotnet.github.io/docfx/

+ 2
- 1
docs/docfx.json View File

@@ -42,7 +42,8 @@
"resource": [ "resource": [
{ {
"files": [ "files": [
"images/**"
"**/images/**",
"**/samples/**"
], ],
"exclude": [ "exclude": [
"obj/**", "obj/**",


+ 1
- 1
docs/guides/installing.md View File

@@ -11,7 +11,7 @@ Optionally, you may compile from source and install yourself.


Currently, Discord.Net targets [.NET Standard] 1.3, and offers support for Currently, Discord.Net targets [.NET Standard] 1.3, and offers support for
.NET Standard 1.1. If your application will be targeting .NET Standard 1.1, .NET Standard 1.1. If your application will be targeting .NET Standard 1.1,
please see the [additional steps](#installing-on-.net-standard-11).
please see the [additional steps](#installing-on-net-standard-11).


Since Discord.Net is built on the .NET Standard, it is also recommended to Since Discord.Net is built on the .NET Standard, it is also recommended to
create applications using [.NET Core], though you are not required to. When create applications using [.NET Core], though you are not required to. When


+ 5
- 2
docs/guides/intro.md View File

@@ -34,7 +34,9 @@ through the OAuth2 flow.


1. Open your bot's application on the [Discord Applications Portal] 1. Open your bot's application on the [Discord Applications Portal]
2. Retrieve the app's **Client ID**. 2. Retrieve the app's **Client ID**.

![Step 2](images/intro-client-id.png) ![Step 2](images/intro-client-id.png)

3. Create an OAuth2 authorization URL 3. Create an OAuth2 authorization URL
`https://discordapp.com/oauth2/authorize?client_id=<CLIENT ID>&scope=bot` `https://discordapp.com/oauth2/authorize?client_id=<CLIENT ID>&scope=bot`
4. Open the authorization URL in your browser 4. Open the authorization URL in your browser
@@ -45,6 +47,7 @@ Only servers where you have the `MANAGE_SERVER` permission will be
present in this list. present in this list.


6. Click authorize 6. Click authorize

![Step 6](images/intro-add-bot.png) ![Step 6](images/intro-add-bot.png)


## Connecting to Discord ## Connecting to Discord
@@ -120,7 +123,7 @@ on your bot's application page on the [Discord Applications Portal]).


>[!IMPORTANT] >[!IMPORTANT]
Your bot's token can be used to gain total access to your bot, so Your bot's token can be used to gain total access to your bot, so
**do __NOT__ share this token with anyone!**. It may behoove you to
**do __NOT__ share this token with anyone!** It may behoove you to
store this token in an external file if you plan on distributing the store this token in an external file if you plan on distributing the
source code for your bot. source code for your bot.


@@ -157,7 +160,7 @@ for how to fix this.
[TAP]: https://docs.microsoft.com/en-us/dotnet/articles/csharp/async [TAP]: https://docs.microsoft.com/en-us/dotnet/articles/csharp/async
[API Documentation]: xref:Discord.Rest.BaseDiscordClient#Discord_Rest_BaseDiscordClient_Log [API Documentation]: xref:Discord.Rest.BaseDiscordClient#Discord_Rest_BaseDiscordClient_Log
[DiscordSocketClient]: xref:Discord.WebSocket.DiscordSocketClient [DiscordSocketClient]: xref:Discord.WebSocket.DiscordSocketClient
[installing guide]: installing.md#installing-on-.net-standard-11
[installing guide]: installing.md#installing-on-net-standard-11


### Handling a 'ping' ### Handling a 'ping'




+ 37
- 6
docs/guides/logging.md View File

@@ -1,11 +1,42 @@
# Using the Logger
---
title: Logging
---


Discord.Net will automatically output log messages through the [Log](xref:Discord.DiscordClient#Discord_DiscordClient_Log) event.
Discord.Net's clients provide a [Log] event that all messages will be
disbatched over.


## Usage
For more information about events in Discord.Net, see the [Events]
section.


To handle Log Messages through Discord.Net's Logger, hook into the [Log](xref:Discord.DiscordClient#Discord_DiscordClient_Log) event.
[Log]: xref:Discord.Rest.BaseDiscordClient#Discord_Rest_BaseDiscordClient_Log
[Events]: events.md


The @Discord.LogMessage object has a custom `ToString` method attached to it, when outputting log messages, it is reccomended you use this, instead of building your own output message.
### Usage


[!code-csharp[](samples/logging.cs)]
To receive log events, simply hook the discord client's log method
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.

### Usage in Commands

Discord.Net's [CommandService] also provides a 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.

#### Samples

[!code-csharp[Logging Sample](samples/logging.cs)]

#### Tips

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.

+ 21
- 20
docs/guides/samples/logging.cs View File

@@ -1,28 +1,29 @@
using Discord; using Discord;
using Discord.Rest;
using Discord.WebSocket;


public class Program public class Program
{ {
private DiscordSocketClient _client;
static void Main(string[] args) => new Program().Start().GetAwaiter().GetResult();
public async Task Start()
{
_client = new DiscordSocketClient(new DiscordSocketConfig() {
private DiscordSocketClient _client;
static void Main(string[] args) => new Program().MainAsync().GetAwaiter().GetResult();
public async Task MainAsync()
{
_client = new DiscordSocketClient(new DiscordSocketConfig
{
LogLevel = LogSeverity.Info LogLevel = LogSeverity.Info
});
});


_client.Log += Log;
_client.Log += Log;


await _client.LoginAsync(TokenType.Bot, "bot token");
await _client.ConnectAsync();
await Task.Delay(-1);
}
await _client.LoginAsync(TokenType.Bot, "bot token");
await _client.StartAsync();
await Task.Delay(-1);
}


private Task Log(LogMessage message)
{
Console.WriteLine(message.ToString());
return Task.CompletedTask;
}
}
private Task Log(LogMessage message)
{
Console.WriteLine(message.ToString());
return Task.CompletedTask;
}
}

Loading…
Cancel
Save