Logging


Why does logging require a page on its own? link

Logging is a crucial part of maintaining the performance and security of your ECR. Its helping you identify and troubleshoot issues effectively. This page will give you best practices and examples for implementing logging in your ECR.

We have been apart of way too many integrations where the logfile of the ECR is filled with shattered textfields, no timestamps, zero structure, etc. So we need to shine some light on this subject to help us, and you to troubleshoot issues in the future.

The structure of your logs link

A well-defined log format ensures consistency which then results in an easier time when parsing a log. Consider using a structured format like:

  • JSON
  • XML
  • CSV
  • YAML
  • MARKDOWN
  • or a standardized log message pattern.

They are all accepted and we are looking forward to seeing how you log your communication! :)

What should the logs look like? link

This example shows you a log that clearly defines where the message originated, what kind of message it is and its contents in an unaltered form:

 

"dateTime":"2023-09-12 12:49:23:452" From ECR: 192.168.23.102:1337 Payments Request
{
	"integration-key":"Your integration Key",
		"amounts": {
  		"base": 100,
  		"currencySymbol": "SEK",
	}
}
"dateTime":"2023-09-12 12:49:25:902" From Terminal: 192.168.89.102 Payments Response
{
  "amounts": {
    "base": 100,
    "total": 100,
    "currency": {
      "code": "752",
      "symbol": "SEK",
      "exponent": 2
    }
  },
  "approvalCode": "600291",
  "authorizationMethod": {
    "id": "1",
    "description": "Online"
  },
  "authorizationResponder": {
    "id": "3",
    "description": "Authorized by DPC"
  },
  "batchNumber": "974",
  "cardProductName": "MASTERCARD",
  "emvData": {
    "aid": "A0000000041010",
    "atc": "00743",
    "psn": "00",
    "tvr": "0000008001",
    "ac": {
      "arqc": "331A5BE067EEC68E"
    }
  },
  "entryMode": {
    "id": "K",
    "description": "Contactless EMV"
  },
  "financialInstitution": "DUM",
  "internalKernelStatus": "0x203",
  "isoResponseCode": "00",
  "maskedPan": "************3836",
  "merchant": {
    "acquirerId": "123456789",
    "id": "65828034",
    "name": "Petter Test - Sverige",
    "address": "Slottsjordsv��gen 5",
    "city": "30238 Halmstad",
    "organizationNumber": "556621-5215",
    "phoneNumber": "432523452345"
  },
  "paymentAccountReference": "5001ERON1M70FLSE51WNNZE9UG2I6",
  "receiptNumber": "070219",
  "receipt": {
    "customer": {
      "shouldPrint": true,
      "escpos": "GyEbUBtBUGV0dGVyIFRlc3QgLSBTdmVyaWdlClNsb3R0c2pvcmRzduRnZW4gNQozMDIzOCBIYWxtc3RhZApUZm46IDQzMjUyMzQ1MjM0NQpPUkcuTlI6IDU1NjYyMS01MjE1CgobJhtQG0BURVJNSU5BTDobQjE4Mjg1NzMwMzIwMTExMjIwMzI5NTQyNgobQEJVVElLOhtCMTIzNDU2Nzg5IDY1ODI4MDM0ChtAREFUVU06MjAyMy0wOS0xMhtCVElEOjIxOjQ4ChtAG0EKG1JL1lAKR09ES8ROVAobUAobQEJFTE9QUBtCU0VLIDEwMCwwMAobQBtSVE9UQUwbQlNFSyAxMDAsMDAKG0AbUApDT05UQUNUTEVTUwpNQVNURVJDQVJECioqKioqKioqKioqKjM4MzYbQlBTTjowMAobQAobQUJBTSBLLzEgMyAwMDAgRFVNIDk3NCA2MDAyOTEKG0BLVklUVE86MDcwMjE5G0JSRUY6MzA3MzQzNzYwNzY1ChtACkFUQzowMDc0MyAgG0IKG0BBSUQ6QTAwMDAwMDAwNDEwMTAKVFZSOjAwMDAwMDgwMDEKQVJRQzozMzFBNUJFMDY3RUVDNjhFCgobJBtQG0FTUEFSQSBLVklUVE9ULCBLVU5ERU5TIEtPUElBCgobJwAA",
      "plain": "\tPetter Test - Sverige\n\tSlottsjordsv��gen 5\n\t30238 Halmstad\n\tTfn: 432523452345\n\tORG.NR: 556621-5215\n\nTERMINAL:\t\t182857303201112203295426\nBUTIK:\t\t123456789 65828034\nDATUM:2023-09-12\t\tTID:21:48\n\t\n\tK��P\n\tGODK��NT\n\nBELOPP\t\tSEK 100,00\nTOTAL\t\tSEK 100,00\n\nCONTACTLESS\nMASTERCARD\n************3836\t\tPSN:00\n\n\tBAM K/1 3 000 DUM 974 600291\nKVITTO:070219\t\tREF:307343760765\n\nATC:00743  \t\t\nAID:A0000000041010\nTVR:0000008001\nARQC:331A5BE067EEC68E\n\n\tSPARA KVITTOT, KUNDENS KOPIA\n\n"
    },
    "merchant": {
      "shouldPrint": false,
      "escpos": "GyEbUBtBUGV0dGVyIFRlc3QgLSBTdmVyaWdlClNsb3R0c2pvcmRzduRnZW4gNQozMDIzOCBIYWxtc3RhZApUZm46IDQzMjUyMzQ1MjM0NQpPUkcuTlI6IDU1NjYyMS01MjE1CgobJhtQG0BURVJNSU5BTDobQjE4Mjg1NzMwMzIwMTExMjIwMzI5NTQyNgobQEJVVElLOhtCMTIzNDU2Nzg5IDY1ODI4MDM0ChtAREFUVU06MjAyMy0wOS0xMhtCVElEOjIxOjQ4ChtAG0EKG1JL1lAKR09ES8ROVAobUAobQEJFTE9QUBtCU0VLIDEwMCwwMAobQBtSVE9UQUwbQlNFSyAxMDAsMDAKG0AbUApDT05UQUNUTEVTUwpNQVNURVJDQVJECioqKioqKioqKioqKjM4MzYbQlBTTjowMAobQAobQUJBTSBLLzEgMyAwMDAgRFVNIDk3NCA2MDAyOTEKG0BLVklUVE86MDcwMjE5G0JSRUY6MzA3MzQzNzYwNzY1ChtACkFUQzowMDc0MyAgG0IKG0BBSUQ6QTAwMDAwMDAwNDEwMTAKVFZSOjAwMDAwMDgwMDEKQVJRQzozMzFBNUJFMDY3RUVDNjhFCgobJBtQG0FTUEFSQSBLVklUVE9ULCBCVVRJS0VOUyBLT1BJQQoKGycA",
      "plain": "\tPetter Test - Sverige\n\tSlottsjordsv��gen 5\n\t30238 Halmstad\n\tTfn: 432523452345\n\tORG.NR: 556621-5215\n\nTERMINAL:\t\t182857303201112203295426\nBUTIK:\t\t123456789 65828034\nDATUM:2023-09-12\t\tTID:21:48\n\t\n\tK��P\n\tGODK��NT\n\nBELOPP\t\tSEK 100,00\nTOTAL\t\tSEK 100,00\n\nCONTACTLESS\nMASTERCARD\n************3836\t\tPSN:00\n\n\tBAM K/1 3 000 DUM 974 600291\nKVITTO:070219\t\tREF:307343760765\n\nATC:00743  \t\t\nAID:A0000000041010\nTVR:0000008001\nARQC:331A5BE067EEC68E\n\n\tSPARA KVITTOT, BUTIKENS KOPIA\n\n"
    }
  },
  "spdhResponseCode": "000",
  "terminal": {
    "id": "182857303201112203295426",
    "dateTime": "2023-09-12T21:49",
    "uptimeSeconds": 2101,
    "software": {
      "current": "bambora_pos-1.0.20.6993"
    },
    "rebootTime": "21:12"
  },
  "terminalResponse": {
    "id": 0,
    "description": "Successful"
  },
  "terminalRrn": "230912214859",
  "timestamp": "230912214859",
  "transactionId": "307343760765",
  "transactionOutcome": "Approved",
  "transactionType": "Payment",
  "verificationMethod": {
    "id": "/",
    "description": "No CVM required"
  }
}



Here is an example of a practically unusable logfile

  • No identification of who sends and receives the data.
  • Not any clear and readable timestamps.
  • No IP/PORT of the ECR and Terminal.
  • Scrambled data-elements. The values doesn’t correlate to the data-elements.
 

Message dateTime: 20230923-20314523

integration-key  amounts/base  amounts/currencySymbol
Your integration key  100  SEK

Message dateTime: 20230923-20314601

amounts/base  amounts/total  amounts/currency/code  amounts/currency/symbol  amounts/currency/exponent  approvalCode  authorizationMethod/id  authorizationMethod/description  authorizationResponder/id  authorizationResponder/description  batchNumber  cardProductName  emvData/aid  emvData/atc  emvData/psn  
emvData/tvr  emvData/ac/arqc  entryMode/id  entryMode/description  financialInstitution  internalKernelStatus  isoResponseCode  maskedPan  merchant/acquirerId  merchant/id  merchant/name  

merchant/address  merchant/city  merchant/organizationNumber  merchant/phoneNumber  paymentAccountReference  receiptNumber  receipt/customer/shouldPrint  
receipt/customer/escpos  receipt/customer/plain  receipt/merchant/shouldPrint  receipt/merchant/escpos  receipt/merchant/plain  spdhResponseCode  terminal/id  terminal/dateTime  terminal/

uptimeSeconds  terminal/software/current  terminal/rebootTime  terminalResponse/id  terminalResponse/description  terminalRrn  timestamp  transactionId  transactionOutcome  transactionType  verificationMethod/id  verificationMethod/description
100  100  752  SEK  2  600291  1  Online  3  Authorized by DPC  974  MASTERCARD  A0000000041010  00743  00  0000008001  331A5BE067EEC68E  K  Contactless EMV  DUM  0x203  00  ************3836  123456789  65828034  Petter Test - Sverige  Slottsjordsv��gen 5  30238 Halmstad  556621-5215  432523452345  5001ERON1M70FLSE51WNNZE9UG2I6  070219  true  GyEbUBtBUGV0dGVyIFRlc3QgLSBTdmVyaWdlClNsb3R0c2pvcmRzduRnZW4gNQozMDIzOCBIYWxtc3RhZApUZm46IDQzMjUyMzQ1MjM0NQpPUkcuTlI6IDU1NjYyMS01MjE1CgobJhtQG0BURVJNSU5BTDobQjE4Mjg1NzMwMzIwMTExMjIwMzI5NTQyNgobQEJVVElLOhtCMTIzNDU2Nzg5IDY1ODI4MDM0ChtAREFUVU06MjAyMy0wOS0xMhtCVElEOjIxOjQ4ChtAG0EKG1JL1lAKR09ES8ROVAobUAobQEJFTE9QUBtCU0VLIDEwMCwwMAobQBtSVE9UQUwbQlNFSyAxMDAsMDAKG0AbUApDT05UQUNUTEVTUwpNQVNURVJDQVJECioqKioqKioqKioqKjM4MzYbQlBTTjowMAobQAobQUJBTSBLLzEgMyAwMDAgRFVNIDk3NCA2MDAyOTEKG0BLVklUVE86MDcwMjE5G0JSRUY6MzA3MzQzNzYwNzY1ChtACkFUQzowMDc0MyAgG0IKG0BBSUQ6QTAwMDAwMDAwNDEwMTAKVFZSOjAwMDAwMDgwMDEKQVJRQzozMzFBNUJFMDY3RUVDNjhFCgobJBtQG0FTUEFSQSBLVklUVE9ULCBLVU5ERU5TIEtPUElBCgobJwAA  "
"  false  GyEbUBtBUGV0dGVyIFRlc3QgLSBTdmVyaWdlClNsb3R0c2pvcmRzduRnZW4gNQozMDIzOCBIYWxtc3RhZApUZm46IDQzMjUyMzQ1MjM0NQpPUkcuTlI6IDU1NjYyMS01MjE1CgobJhtQG0BURVJNSU5BTDobQjE4Mjg1NzMwMzIwMTExMjIwMzI5NTQyNgobQEJVVElLOhtCMTIzNDU2Nzg5IDY1ODI4MDM0ChtAREFUVU06MjAyMy0wOS0xMhtCVElEOjIxOjQ4ChtAG0EKG1JL1lAKR09ES8ROVAobUAobQEJFTE9QUBtCU0VLIDEwMCwwMAobQBtSVE9UQUwbQlNFSyAxMDAsMDAKG0AbUApDT05UQUNUTEVTUwpNQVNURVJDQVJECioqKioqKioqKioqKjM4MzYbQlBTTjowMAobQAobQUJBTSBLLzEgMyAwMDAgRFVNIDk3NCA2MDAyOTEKG0BLVklUVE86MDcwMjE5G0JSRUY6MzA3MzQzNzYwNzY1ChtACkFUQzowMDc0MyAgG0IKG0BBSUQ6QTAwMDAwMDAwNDEwMTAKVFZSOjAwMDAwMDgwMDEKQVJRQzozMzFBNUJFMDY3RUVDNjhFCgobJBtQG0FTUEFSQSBLVklUVE9ULCBCVVRJS0VOUyBLT1BJQQoKGycA  "
"  000  182857303201112203295426  2023-09-12T21:49  2101  bambora_pos-1.0.20.6993  21:12  0  Successful  230912214859  230912214859  307343760765  Approved  Payment  /  No CVM required



Effort put into good logs is never wasted!