Serilog sink that writes events to Google Cloud Logging.
- Built for
net6.0,net5.0,netstandard2.0 - Release Notes
Install package from Nuget:
dotnet add package Serilog.Sinks.GoogleCloudLogging
var config = new GoogleCloudLoggingSinkOptions { ProjectId = "YOUR_PROJECT_ID" };
Log.Logger = new LoggerConfiguration().WriteTo.GoogleCloudLogging(config).CreateLogger();This requires the serilog-settings-configuration package.
"Serilog": {
"Using": [ "Serilog.Sinks.GoogleCloudLogging" ],
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "GoogleCloudLogging",
"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();- Serilog example for .NET 6: https://blog.datalust.co/using-serilog-in-net-6/
This library uses the Google Cloud .NET client and Application Default Credentials. The Logs Writer permission is required to send logs. There are several different ways to set credentials:
- GCE, GKE, Cloud Run, AppEngine and other managed services will have the Application Default Credentials set to the active service account for the resource and can be used without any additional configuration.
- Authenticate manually with the gcloud SDK on a server to set the Application Default Credentials.
- Set the
GOOGLE_APPLICATION_CREDENTIALSenvironment variable to specify the path to your JSON credentials file. - Set the
GoogleCredentialJsonconfig option to pass in a JSON string (the contents of your JSON credentials file).
- Serilog is designed for structured logging which is fully supported by Google Cloud. Logs are sent as a JSON object (
JsonPayloadin the protobuf API) with labels, properties, metadata and any other data like stack traces automatically attached. - Numeric values in labels and properties will be converted to
doubleduring 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. - GCP Error Reporting is separate from Cloud Logging and will automatically capture error messages only if they have an
Exceptionattached. It is not based on log severity level. - View logs in the GCP Logs Explorer: https://console.cloud.google.com/logs/viewer
| 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 |