Introduction
The TIM API is the standard application interface for ECR integration using SIX Payment Services terminals.
TIM API provides a comprehensive feature set to support the requirements of several different markets. This guideline is intended to be used by ECR integrators that need to implement the TIM API functionality in their products.
The following document contains an overview structure, description of the TIM API modes synchronous/asynchronous and describes the corresponding functions, notifiers and data elements that can be used with the TIM API. Furthermore implementation examples are provided. Nevertheless always the corresponding description of a function or data element is authoritative, not the examples.
Setup Configuration
Once a
Terminal
-instance has been created with a
TerminalSettings
-instance, the settings can not be changed anymore.
Changes to the
TerminalSettings
-instance will be ignored.
The network and guides configuration are explained in the following
chapters.
For further information refer toTerminalSettings
.
Network Configuration
Depending on the platform used, the TIM API module can communicate with the Terminal over different communication channels.
The default communication is over TCP/IP connection. Default port used is 7784.
For TCP/IP connection there are two possible ways to connect to the terminal:
-
Broadcast-Mode:
- Terminal ID (TID) is known.
- The TIM API starts broadcasting on the default interface and connects to the connection information sent by the matching terminal.
-
Direct Connect:
- IP address of the terminal is known.
- Connection is established directly via IP.
Guides Configuration
There are various
Guides
covering different use case scenarios. The guide Retail
is the basic guide and is activated as
default. With
the list-member
Guides
the guides can be configured.
Code-example for creating a terminal including settings with activated guides retail and hospitality:
using SIX.TimApi;
// Create settings with Terminal-ID of terminal to connect to
TerminalSettings settings = new TerminalSettings();
settings.TerminalId = "12345678";
// add wanted guides
settings.Guides.Add(Constants.Guides.Hospitality);
settings.Guides.Add(Constants.Guides.Gastro);
// Create terminal
Terminal terminal = new Terminal(settings);
//...
// Disconnect from terminal and clean up properly
terminal.dispose();
Configuration File
With the use of the configuration file “TimApi.cfg”
TerminalSettings
can be set from outside of the application. If the user wishes to use multiple instances of the
Terminal
class it can be configured using ini-sections in the config file which are separated with a user
defined
DeviceId. The same DeviceId has to be used in the constructor of the TerminalSettings class if
the specified
configuration is wished to use. If no DeviceId is specified the global ini-section is used.
The precedence of the configuration is as follows:
- TimApi.cfg will be read first by creating a
TerminalSettings
object - The config previously read from the TimApi.cfg file can be overwritten by hand using setter
methods from
the
TerminalSettings
class.
Table with Configuration File Parameters:
Parameter | Description |
---|---|
LogDir | Directory where log files are generated |
LogTerminal | Logging level of terminal logs, defines how much information will be logged. For detailed values see Logging / LogLevel |
LogStateMachineTerminal | Logging level of state-machine logs, defines how much information will be logged. For detailed values see Logging / LogLevel |
LogBackend | Logging level of backend logs, defines how much information will be logged. For detailed values see Logging / LogLevel |
LogComm | Logging level of comm logs, defines how much information will be logged. For detailed values see Logging / LogLevel |
LogRetainArchiveCount | Defines how many log files will be kept before deleting (or archiving) the oldest. |
TerminalId | Terminal ID to be broadcasted in case of ConnectionMode Broadcast |
ConnectionMode | Connection mode used between ECR and EFT. For more information see
ConnectionMode
|
ConnectionIPString | IP address of the EFT terminal in case of ConnectionMode OnFixIP and Websockets. |
ConnectionIPPort | Listening Port of the EFT terminal in case of ConnectionMode OnFixIP and Websockets. |
ProtocolType | Protocol type. For detailed values see
ProtocolType .
|
FetchBrands | Automatically retrieves application information during logging in. Default is on (value “On” or “Off”) |
AutoCommit | After executing the Transaction- function the API commits the transaction automatically. Default is on (value “On” or “Off”) |
RequestRepetition | Defines how many times a Commit or Rollback request is sent repeatedly, if the original request has been lost. (Default = 0, means disabled = no repetition) |
EnableKeepAlive | Defines if KeepAlive functionality shall be enabled or not. Default is on (value “On” or “Off”). |
Example “TimApi.cfg”: This example describes the TimApi.cfg file with a global ini-section and two different ini-sections for specific DeviceIds:
[global]
ProtocolType = SIXml
TerminalId = 21001234
LogDir = var/log
[MyDeviceId]
ProtocolType = SIXml
TerminalId = 12345678
LogDir = var/otherLog
[MySecondDeviceId]
ProtocolType = SIXml
TerminalId = 87654321
LogDir = var/yetAnotherLog
ConnectionMode = OnFixIp
ConnectionIPString = 192.168.1.13
RequestRepetition = 2
[MyThirdDeviceId]
ProtocolType = SIXml
TerminalId = 18000004
LogDir = var/yetAnotherLog
ConnectionMode = Websockets
ConnectionIPString = 192.168.1.13
ConnectionIPPort = 80
Operation Overview
Follow these basic steps for using the TIM API:
- Create
TerminalSettings
and initialize connection parameters (see Setup Configuration) - Create
Terminal
instance using the createdTerminalSettings
- Set some properties where required:
- Define a
POS ID
-
create mandatory
list of
EcrInfo
and add withAddEcrData
-
create list of
PrintOptions
and set the terminal memberPrintOptions
- Register listener-events. See chapter Terminal methods.
- Define a
-
Connect
andLogin
. This can be done automatically, when the first terminal operation is called or manually using the login method. - Use terminal operation functions.
Automatisms
The TIM API uses two different types of automatisms:
-
Pre-Automatisms: This means that all actions that need to be done before a function can be called. E.g. a transaction can be called in disconnected state without having called connect, login and activate in advance. These are called automatically by the TIM API before the transaction is performed. The Pre-Automatisms are enabled by default.
-
Post-Automatisms: These automatisms can be enabled or disabled using the members
AutoCommit
andFetchBrands
. A Post-Automatism is triggered after an action has been performed. E.g. if a connect has been called andFetchBrands
is activated, anApplicationInformation
request is called automatically after the connect. Or ifAutoCommit
is activated aCommit
is performed automatically after a transaction has been made.AutoCommit
andFetchBrands
are enabled by default.
The following diagramsshow the principle of the Pre-Automatisms and Post-Automatisms. Pre-Automatisms are enabled by default and cannot be disabled. If an error occurs the started request from the ECR is returned with an error.
Synchronous flow
Asynchronous flow
Use Cases
This chapter describes various guides and their use cases.
Hint: if no content visible, try to select a guide under "Guide Selection" on the left.
Manual Pan Key Entry
The TIM API offers the possibility to perform a Manual Pan Key Entry (MPKE) on ECR side, e.g. if no physical card is present.
This can be done by setting the CardRef
field in the TransactionData
container
present in the terminal instance.
This CardRef
field must have the following format to reference a non-PCI PAN:
Example: "061234567801234567" : "06" is the prefix that defines the content type that follows (non-PCI PAN), "1234568701234567" is then the non-PCI PAN.
Important: The MPKE on the ECR is only allowed for non-PCI brands, otherwise the manual entry must only be performed on the PIN Pad.
Guide Petrol Use Cases
Petrol functionality adds a number of
additional methods and notifiers,
Transaction types
,
containers (AdditionalInfoList
,
Basket
)
, container content (ProcessingDisposition
)
and flows
tailored to the needs at petrol stations.
Petrol has the following basic use cases:
Petrol Basket Handling
An essential part of the petrol use cases is the usage of the Basket
container.
This container is used to exchange information regarding purchased goods and fuel at a petrol station. It is important to know that the correctness of the content
of the basket container lies within the responsibility of the ECR and/or the acquiring host, not of the TIM API or the terminal.
The Basket
is sent from the ECR to the terminal, then from the terminal to the host.
The host may adjust the content of the Basket
depending on the card used for the transaction,
therefore the Basket
sent from ECR to terminal may differ from the
Basket
returned from terminal to ECR.
A Basket
may be used with the following TransactionTypes
:
- Purchase
- FinalizePurchase
To send a Basket
within a request, the TransactionRequest
must be created by the integrator and the Basket
and its BasketItems
must then be set in the TransactionRequest
.
The TransactionRequest
is then used as parameter of the Transaction
/
TransactionAsync
function.
Indoor - Online Card
Online cards are processed like a standard credit or debit payment card through an online system,
no mather if it is a standard credit card or an oil company card. In the latter case however,
depending on the exact brand rules, additional data must be supplied by the ECR system
(usually the type of goods being purchased, see Basket
)
and may be collected form the cardholder (e.g. ID number) and sent on to the online system.
The data is also provided back to the ECR via the Basket
and AdditionalInfoList
containers.
An online system may decline parts of the purchase basket.
The transaction flow differs from the standard scenario in an additional way. To distinguish
between online cards (this scenario) and offline cards
(that scenario ) it is
necessary to first initiate a card detection through an
InitTransaction
call.
This is an indoor scenario, i.e. takes place in an attended environment, usually a shop that is part of the petrol station. See this flow for reference.
Outdoor - Online Card
Outdoor - Online Card is esentially the same scenario as above. The difference is that it takes place on an unattended terminal generally located at or near the petrol pump.
This scenario requires that exchange of goods for money is slightly altered. The new
sequence of events is: check if sufficient funds are available, hand out goods, finalize
the funds transfer after the final amount is known. This is supported through the
transaction types PreAuthorization
and
FinalizePurchase
.
This is an outdoor scenario, i.e. takes place in an unattended environment, usually at the petrol pump. See this flow for reference.
Indoor - Offline Card
Offline cards are cards that are processed entirely by the ECR system. The EFT operates only
as a card reader, display and keyboard for the ECR. The ECR recognises offline cards based on
the ProcessingDisposition
returned from InitTransaction
.
After the completion of InitTransaction
the ECR is responsible for all further interaction. For cardholder interaction a number of
dialogs (part of the "Dialog" guide) can be used.
This is an indoor scenario, i.e. takes place in an attended environment, usually a shop that is part of the petrol station. See this flow for reference.
Outdoor - Offline Card
Outdoor offline processing of cards does not differ from indoor online processing.
This is an outdoor scenario, i.e. takes place in an unattended environment usually at the petrol pump. See this flow for reference.
Guide Unattended Use Cases
Unattended functionality is aimed at the needs of vending machines an similar devices. It adds
additional methods,
Transaction types
and
flows.
Unattended has the following basic use cases:
Use Case Partial Commit
Commit
-function has an amount parameter.
See this flow for reference.
Use Case Hold Commit
Use Case Amount Adjustment
Use Case Retain Card
Use Case Silent Abort
Guide Banking Use Cases
Banking functionality adds an
additional methods and notifiers,
Banking transaction types
,
and
flows
tailored to the needs of banking use cases.
Banking guide offers the following use cases:
Balance Inquiry
To have an overview about the balance of the account, TIM offers a function
to check the current account balance of the card used. This function is called
BalanceInquiry
and requires
a present card. To be sure that only the right cardholder is able to check his/her
account balance a PIN check will be performed.
See this flow for reference.
Client Identification
For certain banking actions it is required to identify the cardholder by performing
a PIN check. TIM offers this functionality using the "Dialog Mode" which requires the
"Dialog" guide as well, besides the "Banking" guide. The corresponding value for
ResourceId
used to show a PIN check dialog is
PinCheck
.
See this flow for reference.
Signature Capture
Besides checking the PIN of a customer it may be required that a customer has to sign
to perform a certain action. TIM offers a signature capture functionality. This function
requires the "Dialog" guide to be active, besides the "Banking" guide, if used in banking environment.
The corresponding function ShowSignatureCapture
is shown more detailed in the "Dialog" guide.
See this flow for reference.
Card Identification
As there might be some special cards used in the banking environment and therefore special functions used,
TIM allows to make a card identification which delivers CardData
to
determine which action should be done next, depending on the card data returned.
This function requires the "Dialog" guide to be active, besides the "Banking" guide. The corresponding values for
ResourceId
used to identify the card used, are either
Swiss Post CardIdentification
for Swiss Post or
Banking CardIdentification
for other Banking purposes.
See this flow for reference.
Account Transfer: Swiss Post only
A common use case at a bank is to transfer money from one account to another. To be able to use this feature
the "Dialog" guide is required besides the "Banking" guide. TIM offers a function that allows to set the source account, the destination account
and the amount to transfer. The function ShowDialogAsync
with the
corresponding ResourceId
and the PlaceholderItems
must be used. The correct ResourceId
is
InterAccountTransfer
and the following
PlaceholderItems
are required to be set in the
ShowDialogRequest
:
- 0: Source Account
- 1: Source Account Type
- 2: Currency Source Account
- 3: Source Account - Description
- 4: Destination Account
- 5: Destination Account Type
- 6: Currency Destination Account
- 7: Destination Account - Description
- 8: Currency
- 9: Amount
See this flow for reference.
Account Deposit: Swiss Post only
Another use case is that the customer wants to deposit an amount on his/her account. To be able to use this feature
the TransactionType
"AuthorizeDeposit" is introduced in the "Banking" guide. This is done with the function
TransactionAsync
and the
corresponding TransactionType
.
See this flow for reference.
Account Payout: Swiss Post only
A similar use case as above is that the customer wants to withdraw an amount from his/her account. To be able to use this feature
the "Dialog" guide is required besides the "Banking" guide. This is also done with the function
ShowDialogAsync
and the
corresponding ResourceId
and PlaceholderItems
.
The correct ResourceId
is
DisbursementFromAccount
and the following
PlaceholderItems
are required to be set in the
ShowDialogRequest
:
- 0: Debit Account
- 1: Debit Currency
- 2: Amount
See this flow for reference.
Parcel Acknowledgement: Swiss Post only
This next use case is that a customer wants to pick up a parcel and must sign on the device to acknowledge that he/she actually picked up the parcel.
As this requires the signature input of the customer it is offered as dialog function
ShowDialogAsync
and the
corresponding ResourceId
. This requires an activeted "Dialog" guide.
The correct ResourceId
is
PacketAcknowledgement
, There are no
PlaceholderItems
required.
See this flow for reference.
Load PrePaid Phone: Swiss Post only
Another use case is to load a pre paid phone. This is also done with the function
ShowDialogAsync
and the
corresponding ResourceId
and PlaceholderItems
.
The correct ResourceId
is
ShowPhoneNumberWithAmount
and the following
PlaceholderItems
are required to be set in the
ShowDialogRequest
:
- 0: Phone number
- 1: Currency
- 2: Amount to load
See this flow for reference.
Guide Austrian Use Cases
The Austria guide adds two new use cases:
- Non guaranteed payment (NGV)
- Delayed payment
Both use cases do not add any new functions.
Only the standard TransactionAsync
and Transaction
functions with
TransactionType Purchase
are
used with additional parameters the can be set in TransactionData
before starting the purchase transaction.
Austrian Use Case: NGV
An NGV payment is used in conjunction with a standard purchase transaction. The difference is that the purchase is handled
as an own risk transaction for the merchant.
Before starting a purchase transaction the NGVMode
can be set
according to NGVMode
to define the NGV behaviour of a transaction.
With the NGVMode
it is possible to either forbid NGV usage for the next transaction,
to allow it with a fallback to a standard purchase transaction or to set NGV usage to mandatory.
- If the NGV usage is explicitly forbidden the purchase transaction must be performed as a standard purchase.
- If the NGV is wished but fallback is allowed it is possible that the current purchase will either be performed as an NGV purchase or automatically as a standard purchase in case it is not possible to make an NGV purchase.
- If NGV usage is set to mandatory the current purchase transaction must be performed as an NGV purchase. If this is not possible the purchase transaction fails without fallback.
To identify if the current transaction has been performed as an NGV purchase or not a new boolean flag NGVUsedFlag
has been introduced in the TransactionResponse
. For statistics the NGV transactions can also be identified
in the CounterList
using the same NGVUsedFlag
.
Austrian Use Case: Delayed Payment
The delayed payment can only be used in conjunction with an NGV purchase.
For delayed payments, the clearing of a transaction is delayed by the clearing house for the defined number of days.
The delay is set using the ClearingDelay
member in
TransactionData
.
Terminal methods overview
The basic operation modes of terminal calls are:
-
Synchronous
-
Asynchronous
Code example for adding a terminal listener:
// Register listeners on all events that you want to be noticed about.
// You can use multiple event handlers to handle individual events differently if required.
// Handlers can be added and removed any time.
terminal.TerminalStatusChanged += new Terminal.TerminalStatusChangedHandler(onTerminalStatusChanged);
terminal.TransactionCompleted += new Terminal.TransactionCompletedEventHandler(onTransactionCompleted);
.
.
.
void onTerminalStatusChanged(object sender, TerminalStatus trmStatus)
{
// process terminal status (e.g. CardReaderState)
}
void onTransactionCompleted(object sender, Terminal.TransactionCompletedEventArgs transactionCompletedEventArgs)
{
// process transaction response
}
Main / guide Retail terminal functions
Sync method
Async method Completed event |
Description |
---|---|
Activate
ActivateAsync
ActivateCompleted
|
Open a user shift. |
ApplicationInformation
applicationInformationAsync
applicationInformationCompleted
|
Request the list of brands available on the terminal. |
Balance
BalanceAsync
BalanceCompleted
|
Force the EFT Terminal to transmit all transactions to the
host system as well to do the daily closing. |
Cancel
|
Aborts an open asynchronous Financial Transaction or Non-Financial Transaction request, except for a commit or rollback request, which cannot be cancelled. |
ChangeSettings
ChangeSettingsAsync
ChangeSettingsCompleted
|
Change configuration parameters of the EFT Terminal. |
Commit
CommitAsync
CommitCompleted
|
Perform Commit-operation after a successful Transaction call. |
Connect
ConnectCompleted
|
Initiates a connection to the EFT Terminal. |
CounterRequest
CounterRequestAsync
CounterRequestCompleted
|
Get counter information`s from the EFT Terminal. |
DccRates
DccRatesAsync
DccRatesCompleted
|
Request DCC rates from the EFT Terminal. |
Deactivate
DeactivateAsync
DeactivateCompleted
|
Close a user shift. |
Disconnect
Disconnected
|
Interrupts the connection to the EFT Terminal. |
HardwareInformation
HardwareInformationAsync
hardwareInformationCompleted
|
Get hardware information from the EFT Terminal. |
Login
LoginAsync
LoginCompleted
|
Activate a communication session between the ECR and
the terminal. |
Logout
LogoutAsync
LogoutCompleted
|
Terminate an active communication session between the ECR and the terminal. |
Reboot
RebootAsync
RebootCompleted
|
Force the EFT Terminal to reboot. |
ReceiptRequest
ReceiptRequestAsync
ReceiptRequestCompleted
|
Receive the latest receipt or a list of silent receipts. |
Reconciliation
ReconciliationAsync
ReconciliationCompleted
|
Force the EFT Terminal to transmit all financial transactions
to the host system. |
Reconfig
ReconfigAsync
ReconfigCompleted
|
Force the EFT Terminal to get the configuration from the service center. |
Rollback
RollbackAsync
RollbackCompleted
|
Prevent a transaction from being committed to the transaction
log and generates a technical reversal of the authorization. |
SoftwareUpdate
SoftwareUpdateAsync
SoftwareUpdateCompleted
|
Force the EFT Terminal to start a Software Update. |
SystemInformation
SystemInformationAsync
systemInformationCompleted
|
Request system information from the EFT Terminal. |
Transaction
TransactionAsync
TransactionCompleted
|
Starts an EFT Terminal Transaction. |
Guide Petrol terminal functions
Sync method
Async method Completed event |
Description |
---|---|
InitTransaction
InitTransactionAsync
InitTransactionCompleted
|
Retrieve card data for the presented card. |
Guide Unattended terminal functions
Sync method
Async method Completed event |
Description |
---|---|
OpenReader
OpenReaderAsync
OpenReaderCompleted
|
Opens the shutter of the card reader. |
AmtAdjustment
|
Send an amount adjustment notification to the terminal during an open transaction. The amount is used as the new amount for the transaction. |
CloseMaintenanceWindow
CloseMaintenanceWindowAsync
CloseMaintenanceWindowCompleted
|
Prohibits the EFT terminal from performing any triggered maintenance tasks. |
CloseReader
CloseReaderAsync
CloseReaderCompleted
|
Closes the shutter of the card reader. |
Commit
CommitAsync
CommitCompleted
|
Commits a transaction after succesful authorization. A lower amount may be commited than the authorized amount. |
EjectCard
EjectCardAsync
EjectCardCompleted
|
Ejects the card from the card reader. |
HoldCommit
|
Increases the commit timeout. |
OpenMaintenanceWindow
OpenMaintenanceWindowAsync
OpenMaintenanceWindowCompleted
|
Opens a maintenance window where the terminal can perform all maintenance processes it was not able to perform before.> |
Banking terminal functions
Sync method
Async method Completed event |
Description |
---|---|
BalanceInquiry
BalanceInquiryAsync
BalanceInquiryCompleted
|
Perform a balance check of a card/account on the terminal. |
Guide Dialog terminal functions
Sync method
Async method Completed event |
Description |
---|---|
OpenDialogMode
OpenDialogModeAsync
OpenDialogModeCompleted
|
Open dialog mode on the terminal. |
CloseDialogMode
CloseDialogModeAsync
CloseDialogModeCompleted
|
Close dialog mode on the terminal. |
ShowDialog
ShowDialogAsync
ShowDialogCompleted
|
Show dialog on the terminal. |
ShowSignatureCapture
ShowSignatureCaptureAsync
ShowSignatureCaptureCompleted
|
Show signature capture on the terminal. |
Additional terminal listener-events
Listener-event | Description |
---|---|
TerminalStatusChanged
|
The terminal status has changed. The new status can be
retrieved from the TerminalStatus property. |
Flows
This chapter describes various flows for specific guides.
Hint: if no content visible, try to select a guide under "Guide Selection" on the left.
Petrol Additional Flows
Petrol Flow: Indoor - Online Card
Petrol Flow: Outdoor - Online Card
Petrol Flow: Indoor - Offline Card
Petrol Flow: Outdoor - Offline Card
Guide Unattended Additional Flows
Flow: Partial Commit
Flow: Hold commit
Flow: Amount adjustment
Flow: PreAuthorization
Flow: Retain card
Flow: Silent abort
Banking Additional Flows
Banking Flow: BalanceInquiry
Banking Flow: Client Identification
Banking Flow: Card Identification
Banking Flow: Account Transfer
Banking Flow: Account Deposit
Banking Flow: Account Payout
Banking Flow: Parcel Acknowledgement
Banking Flow: Load PrePaid Phone
Guide Austrian Additional Flows
Austrian Flow: NGV Purchase without delay
The following flow describes an NGV purchase without any specific clearing delay set. The NGVMode
"AllowedWithFallback"
is used which indicates it the card used is not capable of NGV payments the terminal is allowed to make a fallback to a standard purchase. This flow shows a
successfully performed NGV payment which can be seen by checking the value NGVUsedFlag
, which is set to "true".
Austrian Flow: NGV Purchase with delay
In the flow below, additionally to the NGVMode
"AllowedWithFallback" also the
ClearingDelay
is set to define a specific clearing delay in days.
This means that the NGV payment clearing will be delayed by the amount of days specified. This flow shows a successful NGV payment including
a clearing delay.
Austrian Flow: NGV Purchase fallback with Non-NGV card
The following flow describes an NGV payment with NGVMode
"AllowedWithFallback" which
results in a fallback to a standard purchase due to the fact that the card used is not capable of NGV payments.
The NGVUsedFlag
is used to determine if the NGV payment was performed as such or if a fallback
was used. In this case the NGVUsedFlag
value is set to "false" which indicates that the requested
NGV payment was not successful and the fallback to a standard purchase has been done.
Austrian Flow: NGV Purchase mandatory with error
The following flow describes a mandatory NGV purchase transaction which could not be performed by the terminal.
As the used NGVMode
is "Mandatory" but the card used is not capable of NGV payments, the
transaction results in an error which means a ResultCode
!= '0' and an error payload as transaction response.
Logging
The TIM API is able to log an extensive set of events and actions within the TIM API. It's key that logs are created and stored properly. Logging enables support and makes bug-tracking much easier.
Log Level
By default the TIM API has a Logger that defines how much logging is generated inside the TIM API.
The following logging levels are valid:
- "FINEST"
- "FINER"
- "FINE"
- "INFO"
- "WARNING"
- "SEVERE"
- "OFF"
Log Configuration
Configuration of TIM API .NET logging is done in the
TerminalSettings
-object.
The logger's log-level can be adjusted with the following properties:
Property | Description |
---|---|
LogTerminal | Log-Level of logs related to the terminal. |
LogStateMachine | Log-Level of logs related to the internal state-machine. |
LogBackend | Log-Level of logs related to the internal backend. |
LogComm | Log-Level of logs related to communication. |
Use the following Properties to change how logs are written / archived:
Property | Description |
---|---|
LogDir | Directory to write log-files into |
LogRetainArchiveCount | Number of log file archives to keep before deleting them. Use 0 to disable delete |