Server settings in log4net.config: Difference between revisions
(→Logs) |
|||
| (6 intermediate revisions by the same user not shown) | |||
| Line 8: | Line 8: | ||
* log4net > appender > '''lockingModel''': By default, the server log works in the ''ExclusiveLock'' mode, i.e. the log file is reserved by the QPR ProcessAnalyzer process for the entire time QPR ProcessAnalyzer is running. Thus it's not possible to edit or delete log files during that time. | * log4net > appender > '''lockingModel''': By default, the server log works in the ''ExclusiveLock'' mode, i.e. the log file is reserved by the QPR ProcessAnalyzer process for the entire time QPR ProcessAnalyzer is running. Thus it's not possible to edit or delete log files during that time. | ||
==Send logs to OpenTelemetry== | ==Send logs, metrics and traces to OpenTelemetry== | ||
=== Logs === | |||
QPR ProcessAnalyzer can write logs using the OpenTelemetry (https://opentelemetry.io/docs) exporter 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 === | === Metrics === | ||
QPR ProcessAnalyzer can | QPR ProcessAnalyzer can write metrics using the OpenTelemetry (https://opentelemetry.io/docs) exporter into the provided endpoint. | ||
There are the following standard metrics | There are the following standard metrics: | ||
* '''_Microsoft.AspNetCore_''' to track QPR ProcessAnalyzer API calls. | * '''_Microsoft.AspNetCore_''' to track QPR ProcessAnalyzer API calls. | ||
* '''_Microsoft.EntityFrameworkCore_''' to track EntityFramework status. | * '''_Microsoft.EntityFrameworkCore_''' to track EntityFramework status. | ||
* '''_Microsoft.Data.SqlClient.EventSource_''' to track | * '''_Microsoft.Data.SqlClient.EventSource_''' to track SQL Server client status. | ||
If an endpoint is not configured, metrics are not collected and exported. | If an endpoint is not configured, metrics are not collected and exported. | ||
=== | === Traces === | ||
QPR ProcessAnalyzer can write | QPR ProcessAnalyzer can write traces using the OpenTelemetry (https://opentelemetry.io/docs) exporter into the provided endpoint. | ||
There are the following standard traces: | |||
* ''' | * '''_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 language 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. | |||
Latest revision as of 23:32, 26 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):
- log4net > appender > maximumFileSize: Maximum size of the log file. When the maximum size is reached, the log writing continues in a new file, and the old file is archived. The default setting is 100MB. (https://logging.apache.org/log4net/log4net-1.2.13/release/sdk/log4net.Appender.RollingFileAppender.MaximumFileSize.html)
- log4net > appender > maxSizeRollBackups: Maximum number of archived log files that are stored. When the maximum file size is reached and new file is created, the oldest archived log file is removed if the maximum number of archived files is reached. The default setting is 1. (http://logging.apache.org/log4net/log4net-1.2.15/release/sdk/html/P_log4net_Appender_RollingFileAppender_MaxSizeRollBackups.htm)
- log4net > appender > lockingModel: By default, the server log works in the ExclusiveLock mode, i.e. the log file is reserved by the QPR ProcessAnalyzer process for the entire time QPR ProcessAnalyzer is running. Thus it's not possible to edit or delete log files during that time.
Send logs, metrics and traces to OpenTelemetry
Logs
QPR ProcessAnalyzer can write logs using the OpenTelemetry (https://opentelemetry.io/docs) exporter 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 metrics using the OpenTelemetry (https://opentelemetry.io/docs) exporter into the provided endpoint.
There are the following standard metrics:
- _Microsoft.AspNetCore_ to track QPR ProcessAnalyzer API calls.
- _Microsoft.EntityFrameworkCore_ to track EntityFramework status.
- _Microsoft.Data.SqlClient.EventSource_ to track SQL Server client status.
If an endpoint is not configured, metrics are not collected and exported.
Traces
QPR ProcessAnalyzer can write traces using the OpenTelemetry (https://opentelemetry.io/docs) exporter into the provided endpoint.
There are the following standard traces:
- _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 language 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.