Version: 1.1.37
This guide details the available configuration settings for the axesFlip CLI application, which uses a standard JSON format for its configuration file (flip.config.json).
To use the application, create a configuration file named flip.config.json tailored to your environment and place it in the same directory as axesflip.exe.
The download package includes example configuration files that you can use as a starting point or adapt to your needs:
- example-flip.config.json
- minimal-example-flip.config.json
Table of contents
- Overview
- Logging
- NLog
- Settings
- Telemetry
- Root-level settings
- Complete configuration example
- Minimal configuration example
Overview
The configuration file is typically loaded by the application at startup. The settings define logging behavior, NLog targets, application runtime, telemetry, and templates.
Logging
Controls console and namespace-specific logging levels. Use this section to configure verbosity for different parts of the application.
For more information, check the .NET Logging documentation.
| Field Name | Data Type | Description |
|---|---|---|
| Logging.EnableConsoleLogging | Boolean | Enables or disables console output for logs. Useful for debugging in development environments. |
| Logging.LogLevel.* | String | Defines minimum severity level for specific namespaces (e.g., Information, Warning, Error). Lower levels produce more detailed logs. |
NLog
Configures advanced logging targets and rules using NLog. Targets define where logs are written (e.g., files), and rules determine which logs go to which targets.
For more information, check the NLog documentation.
| Field Name | Data Type | Description |
|---|---|---|
| NLog.targets.<name>.type | String | Specifies the type of log target (e.g., File). |
| NLog.targets.<name>.fileName | String | Full path to the log file. |
| NLog.targets.<name>.layout | String | Defines the format of each log entry (e.g., timestamp, level, message). |
| NLog.targets.<name>.archiveAboveSize | Integer | Maximum file size in bytes before log rotation occurs. |
| NLog.targets.<name>.archiveNumbering | String | Strategy for numbering archived files (e.g., Sequence). |
| NLog.targets.<name>.maxArchiveFiles | Integer | Maximum number of archived log files to retain. |
| NLog.targets.<name>.concurrentWrites | Boolean | Allows multiple threads to write to the log file simultaneously. |
| NLog.targets.<name>.keepFileOpen | Boolean | Keeps the log file open for performance optimization. |
| NLog.targets.<name>.encoding | String | Character encoding for the log file (e.g., UTF-8). |
| NLog.rules[].logger | String | Pattern matching logger names (e.g., * for all). |
| NLog.rules[].minLevel | String | Minimum log level for this rule (e.g., Debug, Error). |
| NLog.rules[].writeTo | String | Target name where logs should be written. |
Settings
Defines core application behavior, including file handling, threading, and error thresholds.
| Field Name | Data Type | Description |
|---|---|---|
| Settings.EnableTelemetry | Boolean |
Enables telemetry collection for performance monitoring. Default: false |
| Settings.WorkFileExtension | String |
File extension for primary work files (e.g., work, pdf). Default: pdf |
| Settings.TemporaryFileExtension | String |
Extension for temporary files created during processing (e.g., tmp). Default: tmp |
| Settings.FileSearchPattern | String |
Pattern used to locate input files (e.g., *.pdf). Default: *.pdf |
| Settings.DeleteInputFiles | Boolean |
If true, input files are deleted after processing. Default: true |
| Settings.RenameFilesBeforeProcessing | Boolean |
Renames files before processing to avoid conflicts. Default: false |
| Settings.DeleteOutputBeforeProcessing | Boolean |
Clears previous output before starting new processing. Default: false |
| Settings.ShowProgressInterval | Integer |
Interval (in ms) for progress updates in logs. Default: 100 |
| Settings.ExitErrorThreshold | Integer |
Maximum number of errors before application exits. Default: 10 |
| Settings.MaxCommandRunTime | String |
Maximum allowed runtime for commands (HH:MM:SS format). Default: 5 minutes |
| Settings.MaxConsoleError | Integer |
Maximum number of console errors before stopping. Default: 3 |
| Settings.PerformSelfTest | Boolean |
Runs a self-test routine before starting processing. Default: false |
Telemetry
| Field Name | Data Type | Description |
|---|---|---|
| Telemetry.Log | Boolean |
Enables telemetry logging for performance analysis. Default: true |
| Telemetry.UseUnit | String |
Unit of measurement for telemetry data (e.g., Milliseconds, Seconds, Minutes). Default: Miliseconds |
| Telemetry.Precision | Integer |
Decimal precision for telemetry values. Default: 6 |
Root-level settings
| Field Name | Data Type | Description |
|---|---|---|
| Environment | String | The application's runtime environment (e.g., "Development", "Staging", "Production"). If "Production" is set, a valid license is strictly required. |
| LicenseFilePath | String | Path to the license file required for production use. |
Complete configuration example
{
"Logging": {
"LogLevel": {
"A4.Flip.Clients": "Information",
"A4.*": "Warning",
"Microsoft": "Error",
"System": "Error"
},
"EnableConsoleLogging": false
},
"NLog": {
"targets": {
"defaultFile": {
"type": "File",
"fileName": "logs/default.log",
"layout": "${longdate} ${level} ${message} ${exception}"
},
"processLog": {
"type": "File",
"fileName": "logs/process.log",
"layout": "${longdate} ${uppercase:${level}} ${message} ${exception:format=toString,stackTrace}",
"archiveAboveSize": 10485760,
"archiveNumbering": "Sequence",
"maxArchiveFiles": 10,
"concurrentWrites": true,
"keepFileOpen": false,
"encoding": "utf-8"
},
"telemetryLog": {
"type": "File",
"fileName": "logs/telemetry.log",
"layout": "${longdate} ${message}",
"archiveAboveSize": 10485760,
"archiveNumbering": "Sequence",
"maxArchiveFiles": 10,
"concurrentWrites": true,
"keepFileOpen": false,
"encoding": "utf-8"
}
},
"rules": [
{
"logger": "*",
"minLevel": "Debug",
"writeTo": "defaultFile"
},
{
"logger": "ProcessLogger",
"minLevel": "Error",
"writeTo": "processLog"
},
{
"logger": "Telemetry",
"minLevel": "Info",
"writeTo": "telemetryLog"
}
]
},
"Settings": {
"EnableTelemetry": false,
"WorkFileExtension": "pdf",
"TemporaryFileExtension": "tmp",
"FileSearchPattern": "*.pdf",
"DeleteInputFiles": true,
"RenameFilesBeforeProcessing": false,
"DeleteOutputBeforeProcessing": false,
"ShowProgressInterval": 100,
"ExitErrorThreshold": 5,
"MaxCommandRunTime": "00:10:00",
"MaxConsoleError": 3,
"PerformSelfTest": false
},
"Telemetry": {
"Log": true,
"UseUnit": "Seconds",
"Precision": 3
},
"Environment": "Development",
"LicenseFilePath": "./path/to/license/file"
}Minimal configuration example
{
"Logging": {
"LogLevel": {
"Default": "Information"
},
"EnableConsoleLogging": true
},
"NLog": {
"targets": {
"defaultFile": {
"type": "File",
"fileName": "logs/default.log",
"layout": "${longdate} ${level} ${message} ${exception}"
}
},
"rules": [
{
"logger": "*",
"minLevel": "Information",
"writeTo": "defaultFile"
}
]
}
}