Skip to main content

axesFlip CLI configuration guide

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

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"
      }
    ]
  }
}