Server settings in log4net.config

From QPR ProcessAnalyzer Wiki
Jump to navigation Jump to search

QPR ProcessAnalyzer uses the log4net component (https://logging.apache.org/log4net/) for logging, allowing to flexibly define what is logged and where the logs are stored.

Write logs to file

For example, the following settings can be set in the log4net.config file (located in the bin folder in the server application files):

Send logs to OpenTelemetry

Logs

QPR ProcessAnalyzer can write write logs and uses the OpenTelemetry (https://opentelemetry.io/docs) exporter to write them into the provided endpoint. If an endpoint is not configured, logs are not exported.

The following environment variables are used to control collecting and exporting telemetry data using OpenTelemetry Protocol Exporter (https://opentelemetry.io/docs/specs/otel/protocol/exporter):

  • OTEL_EXPORTER_OTLP_ENDPOINT sends all signals to the same collector.
  • OTEL_EXPORTER_OTLP_TRACES_ENDPOINT collector endpoint for traces.
  • OTEL_EXPORTER_OTLP_METRICS_ENDPOINT collector endopint for metrics.
  • OTEL_EXPORTER_OTLP_LOGS_ENDPOINT collector endpoint for logs.

QPR ProcessAnalyzer writes logs with level WARN by default. Logs with level WARN, ERROR, and FATAL additionally written into Snowflake events table utilizing event's severity. Logs are written into container's stdout stream using JSON format for structured logging (https://learn.microsoft.com/en-us/dotnet/core/extensions/console-log-formatter#json).

Metrics

QPR ProcessAnalyzer can write write metrics and uses the OpenTelemetry (https://opentelemetry.io/docs) exporter to write them into the provided endpoint.

There are the following standard metrics are written:

  • _Microsoft.AspNetCore_ to track QPR ProcessAnalyzer API calls.
  • _Microsoft.EntityFrameworkCore_ to track EntityFramework status.
  • _Microsoft.Data.SqlClient.EventSource_ to track SqlClient status.

If an endpoint is not configured, metrics are not collected and exported.

Traces

QPR ProcessAnalyzer can write traces and uses the OpenTelemetry (https://opentelemetry.io/docs) exporter to write them into the provided endpoint.

There are the following standard traces written:

  • _Microsoft.EntityFrameworkCore_ to trace EntityFramework queries.
  • _Microsoft.AspNetCore_ to trace QPR ProcessAnalyzer API calls.

In addition, there are the following custom traces:

  • _QPR.ProcessAnalyzer.ExpressionQuery_ to trace expression query evaluation.
  • _QPR.ProcessAnalyzer.DatabaseOperation_ to trace queries to external data source.
  • _QPR.ProcessAnalyzer.ExpressionLanguage_ to trace calls to expression language function and property calls.

If an endpoint is not configured, traces are not collected and exported.