Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 28 additions & 15 deletions docs/cli/guides/ms-logging.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,39 @@ public void SampleLog()
}
```

## Setting a custom logger
# Setting a custom logger
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this should be a "title heading"; instead, I think it should continue to be a major heading (two ##) and the "Example" section should be a sub-heading (three ###)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Setting a custom logger
## Setting a Custom Logger


To set a custom logger, you can pass a delegate to `config.AddLoggerProvider` inside an `OverrideConfig` call on `BeamServiceConfigBuilder`:
To set a custom logger, you can assign a delegate to `config.AddLoggerProvider` inside an `OverrideConfig` call on `BeamServiceConfigBuilder`.

The delegate has the signature `Func<ILoggingBuilder, DebugLogProcessor, DebugLogProcessor>`:

| Parameter | Type | Description |
|-----------|------|-------------|
| `builder` | `ILoggingBuilder` | The Microsoft logging builder, used to add or clear log providers |
| `defaultProcessor` | `DebugLogProcessor` | The default ZLogger async log processor that Beamable has already set up |
| **returns** | `DebugLogProcessor` | The processor that should actually be used — return `defaultProcessor` or `null` to keep the default, return a new instance to replace it |

## Example:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Example:
### Example of Logger Override

```csharp
await BeamServer
.Create()
.IncludeRoutes<BeamService>()
.OverrideConfig(config =>
{
config.AddLoggerProvider = builder =>
{
builder.ClearProviders(); // remove any other providers added before this callback
builder.AddProvider(new MyCustomLogProvider()); // Add your own provider. This is a class that implements ILoggerProvider
}
})
.RunForever();
await BeamServer
.Create()
.IncludeRoutes<BeamService>()
.OverrideConfig(config =>
{
config.AddLoggerProvider = (builder, defaultProcessor) =>
{
builder.ClearProviders(); // Remove all previously registered providers
builder.AddProvider(new MyCustomLogProvider()); // Add your own ILoggerProvider
return defaultProcessor; // Keep Beamable's default DebugLogProcessor
};
})
.RunForever();
```

Please check the official dotnet documentation for more details on how to create a custom [LogProvider](https://learn.microsoft.com/pt-br/dotnet/api/microsoft.extensions.logging.iloggerprovider?view=net-10.0-pp&viewFallbackFrom=net-9.0-pp)
Please check the official .NET documentation for more details on how to create a custom
[ILoggerProvider](https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.iloggerprovider?view=net-10.0).
For more information on ZLogger's `DebugLogProcessor` and async log processing, see the
[ZLogger LogProcessor documentation](https://github.com/Cysharp/ZLogger?tab=readme-ov-file#logprocessor).

!!! info

Expand Down
Loading