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

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
* 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*

\* 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

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": [
{
"files": [
"images/**"
"**/images/**",
"**/samples/**"
],
"exclude": [
"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
.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
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]
2. Retrieve the app's **Client ID**.

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

3. Create an OAuth2 authorization URL
`https://discordapp.com/oauth2/authorize?client_id=<CLIENT ID>&scope=bot`
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.

6. Click authorize

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

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

>[!IMPORTANT]
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
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
[API Documentation]: xref:Discord.Rest.BaseDiscordClient#Discord_Rest_BaseDiscordClient_Log
[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'



+ 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.Rest;
using Discord.WebSocket;

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
});
});

_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