code: protected List<EmvTransactionRecord> extractLogEntry(final byte[] pLogEntry) throws CommunicationException {
  		List<EmvTransactionRecord> listRecord = new ArrayList<EmvTransactionRecord>();
  		// If log entry is defined
  		if (template.get().getConfig().readTransactions && pLogEntry != null) {
  			List<TagAndLength> tals = getLogFormat();
  			if (tals != null && !tals.isEmpty()) {
  				// read all records
  				for (int rec = 1; rec <= pLogEntry[1]; rec++) {
  					byte[] response = template.get().getProvider()
  							.transceive(new CommandApdu(CommandEnum.READ_RECORD, rec, pLogEntry[0] << 3 | 4, 0).toBytes());
  					// Extract data
  					if (ResponseUtils.isSucceed(response)) {
  						try {
  							EmvTransactionRecord record = new EmvTransactionRecord();
  							record.parse(response, tals);
  
  							if (record.getAmount() != null) {
  								// Fix artifact in EMV VISA card
  								if (record.getAmount() >= 1500000000) {
  									record.setAmount(record.getAmount() - 1500000000);
  								}
  
  								// Skip transaction with null amount
  								if (record.getAmount() == null || record.getAmount() <= 1) {
  									continue;
  								}
  							}
  
  							if (record != null) {
  								// Unknown currency
  								if (record.getCurrency() == null) {
  									record.setCurrency(CurrencyEnum.XXX);
  								}
  								listRecord.add(record);
  							}
  						} catch (Exception e) {
  							LOGGER.error("Error in transaction format: " + e.getMessage(), e);
  						}
  					} else {
  						// No more transaction log or transaction disabled
  						break;
  					}
  				}
  			}
  		}
  		return listRecord;
  	}
docs: Method used to extract log entry from card
  
  @param pLogEntry
  log entry position
  @return list of transaction records
  @throws CommunicationException communication error