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 SourceContextis 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,TraceSampledproperties if available. Default istrue. | 
| 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 |