Server settings in log4net.config: Difference between revisions

From QPR ProcessAnalyzer Wiki
Jump to navigation Jump to search
No edit summary
 
Line 28: Line 28:
** `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` - collector endpoint for traces
** `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` - collector endpoint for traces
** `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` - collector endopint for metrics
** `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` - collector endopint for metrics
* Application writes logs with level `WARN` by default 
** 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)
** Logs with level `WARN`, `ERROR`, `FATAL` additionally written into snowflake events table utilizing event's severity
** Writing logs controlled by `LOG_LEVEL` option for `METADATA` schema. If it is not set, than `WARN` level used. See [Snowflake documentation](https://docs.snowflake.com/en/sql-reference/parameters#label-log-level) for details.
** To take new `LOG_LEVEL` into use service must be restarted
* Application writes traces into [endpoint, provided by Snowflake](https://docs.snowflake.com/en/developer-guide/snowpark-container-services/monitoring-services#publishing-otlp-application-metrics-and-traces) (#2504281133008#)
** Writing traces controlled by `TRACE_LEVEL` option for `METADATA` schema. If it is not set, than `ALWAYS` level used. See [Snowflake documentation](https://docs.snowflake.com/en/sql-reference/parameters#label-trace-level) for details.
* To take new `TRACE_LEVEL` into use service must be restarted
** Application writes metrics into [endpoint, provided by Snowflake](https://docs.snowflake.com/en/developer-guide/snowpark-container-services/monitoring-services#publishing-otlp-application-metrics-and-traces) (#2504281133008#)
* [Snowflake metrics](https://docs.snowflake.com/en/developer-guide/snowpark-container-services/monitoring-services#label-spcs-available-platform-metrics) that should be written:
** _system_ - to track CPU and memory usage
** _system_limits_ - to check CPU and memory limits for container
** _storage_ - to track storage volume used by SqlServer
* Writing metrics controlled by `METRIC_LEVEL` option for `METADATA` schema. If it is not set, than `ALL` level used. See [Snowflake documentation](https://docs.snowflake.com/en/sql-reference/parameters#label-metric-level) for details.
** To take new `METRIC_LEVEL` into use service must be restarted

Latest revision as of 10:35, 24 November 2025

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

Application writes traces and uses [OpenTelemetry](https://opentelemetry.io/docs/) exporter to write them into provided endpoint

  • Standard traces:
    • _Microsoft.EntityFrameworkCore_ - to trace EntityFramework queries
    • _Microsoft.AspNetCore_ - to trace ProcessAnalyzer API calls
  • ProcessAnalyzer 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 functions and properties
  • If endpoint is not configured then traces are not collected and exported.
  • Application writes metrics and uses [OpenTelemetry](https://opentelemetry.io/docs/) exporter to write them into provided endpoint
  • Standard metrics that should be written:
    • _Microsoft.AspNetCore_ - to track ProcessAnalyzer API calls
    • _Microsoft.EntityFrameworkCore_ - to track EntityFramework status
    • _Microsoft.Data.SqlClient.EventSource_ - to track SqlClient status
  • If endpoint is not configured then metrics are not collected and exported.
  • Environment variables 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