Serilog sink that writes events to Google Cloud Platform (Stackdriver) Logging.
$ dotnet add package Serilog.Sinks.GcpThis project is a fork of serilog-sinks-Gcp originally created by Manigandham. The original project is licensed under the MIT License.
This project continues to use the MIT License. The original license text can be found in the LICENSE file.
Serilog sink that writes events to Google Cloud Logging.
net6.0, net5.0, netstandard2.0dotnet add package Serilog.Sinks.Gcp
var config = new GcpSinkOptions { ProjectId = "YOUR_PROJECT_ID" };
Log.Logger = new LoggerConfiguration().WriteTo.Gcp(config).CreateLogger();
This requires the serilog-settings-configuration package.
"Serilog": {
"Using": [ "Serilog.Sinks.Gcp" ],
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "Gcp",
"Args": {
"projectID": "PROJECT-ID-12345",
"restrictedToMinimumLevel": "Information",
"labels": {
"foo": "bar"
}
}
}
]
}
var config = new ConfigurationBuilder().AddJsonFile("appsettings.json", optional: true, reloadOnChange: true).Build();
Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(config).CreateLogger();
This library uses the Google Cloud .NET client and Application Default Credentials. The permission is required to send logs. There are several different ways to set credentials:
GOOGLE_APPLICATION_CREDENTIALS environment variable to specify the path to your JSON credentials file.GoogleCredentialJson config option to pass in a JSON string (the contents of your JSON credentials file).JsonPayload in the protobuf API) with labels, properties, metadata and any other data like stack traces automatically attached.double during serialization because that is the only numeric type supported by JSON. Large integers and floating-point values will lose precision. If you want the exact value preserved then log it as a string instead.Exception attached. It is not based on log severity level.| Option | Description |
|---|---|
| ProjectId | ID (not name) of GCP project where logs will be sent. Optional if running in GCP. Required if running elsewhere or to override the destination. |
| ResourceType | Resource type for logs. Automatically identified if running in GCP or will default to "global". See Monitored Resources and Services for supported types. |
| LogName | Name of the log. Default is "Default", or will use SourceContext is setting is enabled. |
| Labels | Optional Dictionary<string, string> labels added to all log entries. |
| ResourceLabels | Optional Dictionary<string, string> labels added to all log entries, for the resource type. See Monitored Resources and Services for recognized labels. |
| ServiceName | Name of the service added as metadata to log entries. Required for logged exceptions to be forwarded to StackDriver Error Reporting. |
| ServiceVersion | Version of the service added as metadata to log entries. Required for logged exceptions to be forwarded to StackDriver Error Reporting. |
| UseSourceContextAsLogName | The log name for a log entry will be set to the SourceContext property if available. Default is true. |
| UseLogCorrelation | Integrate logs with Cloud Trace by setting Trace, SpanId, TraceSampled properties if available. Default is true. |
| GoogleCredentialJson | JSON string to override Application Default Credentials (contents of your credential file). |
This table shows the mapping from Serilog LogLevel to Google Cloud Logging LogSeverity
| Serilog | Cloud Logging |
|---|---|
| Verbose | Debug |
| Debug | Debug |
| Information | Info |
| Warning | Warning |
| Error | Error |
| Fatal | Critical |