From 57e7d5d44616587d88acaac4f756dbefb90c8a8e Mon Sep 17 00:00:00 2001 From: giomella Date: Fri, 8 Sep 2023 13:05:19 +0200 Subject: [PATCH 1/2] [PRDP-133] added missing dependency and missing environment variables. Change agent from apm to otl. Removed useless env --- Dockerfile | 6 +++--- helm/values-dev.yaml | 16 ++++++++++------ helm/values-prod.yaml | 16 ++++++++++------ helm/values-uat.yaml | 16 ++++++++++------ pom.xml | 20 ++++++++++++++++++++ src/main/resources/logback.xml | 4 +++- 6 files changed, 56 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index b87da96d..7663b0ba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ RUN echo $(ls -1 /src/java-function-app) RUN chmod 777 /src/java-function-app/agent/config.yaml RUN cd /src/java-function-app && \ wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.19.0/jmx_prometheus_javaagent-0.19.0.jar && \ - curl -o 'elastic-apm-agent.jar' -L 'https://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=co.elastic.apm&a=elastic-apm-agent&v=LATEST' && \ + curl -o 'opentelemetry-javaagent.jar' -L 'https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v1.25.1/opentelemetry-javaagent.jar' && \ mkdir -p /home/site/wwwroot && \ mvn clean package -Dmaven.test.skip=true && \ cd ./target/azure-functions/ && \ @@ -17,8 +17,8 @@ RUN cd /src/java-function-app && \ RUN chmod 777 /src/java-function-app/jmx_prometheus_javaagent-0.19.0.jar && \ cp /src/java-function-app/jmx_prometheus_javaagent-0.19.0.jar /home/site/wwwroot/jmx_prometheus_javaagent-0.19.0.jar -RUN chmod 777 /src/java-function-app/elastic-apm-agent.jar && \ - cp /src/java-function-app/elastic-apm-agent.jar /home/site/wwwroot/elastic-apm-agent.jar +RUN chmod 777 /src/java-function-app/opentelemetry-javaagent.jar && \ + cp /src/java-function-app/opentelemetry-javaagent.jar /home/site/wwwroot/opentelemetry-javaagent.jar # This image is ssh enabled #FROM mcr.microsoft.com/azure-functions/java:3.0-java$JAVA_VERSION-appservice diff --git a/helm/values-dev.yaml b/helm/values-dev.yaml index 5b71c00d..2478b930 100644 --- a/helm/values-dev.yaml +++ b/helm/values-dev.yaml @@ -90,12 +90,16 @@ microservice-chart: COSMOS_RECEIPT_CONTAINER_NAME: "receipts" BLOB_STORAGE_ACCOUNT_ENDPOINT: "https://pagopadweureceiptsfnsa.blob.core.windows.net/" BLOB_STORAGE_CONTAINER_NAME: "pagopa-d-weu-receipts-azure-blob-receipt-st-attach" - ELASTIC_APM_SERVICE_NAME: "pagopareceiptpdfgeneratorapm" - ELASTIC_APM_APPLICATION_PACKAGES: "it.gov.pagopa.receipt.pdf.generator" - ELASTIC_APM_SERVER_URL: "http://quickstart-apm-http.elastic-system.svc:8200" - ELASTIC_APM_LOG_SENDING: 'false' ENABLE_ECS_CONSOLE: "true" - JAVA_TOOL_OPTIONS: "-javaagent:/home/site/wwwroot/jmx_prometheus_javaagent-0.19.0.jar=12345:/home/site/wwwroot/config.yaml -javaagent:/home/site/wwwroot/elastic-apm-agent.jar -Xmx1024m -XX:+UseG1GC" + CONSOLE_LOG_THRESHOLD: "DEBUG" + CONSOLE_LOG_PATTERN: "%d{HH:mm:ss.SSS}[%thread]%-5level%logger{36}-%msg%n" + CONSOLE_LOG_CHARSET: "UTF-8" + ECS_SERVICE_NAME: "pagopareceiptpdfgeneratorotl" + OTEL_RESOURCE_ATTRIBUTES: "service.name=pagopareceiptpdfgeneratorotl,deployment.environment=dev" + OTEL_EXPORTER_OTLP_ENDPOINT: "http://otel-collector.elastic-system.svc:4317" + OTEL_LOGS_EXPORTER: none + OTEL_TRACES_SAMPLER: "always_on" + JAVA_TOOL_OPTIONS: "-javaagent:/home/site/wwwroot/jmx_prometheus_javaagent-0.19.0.jar=12345:/home/site/wwwroot/config.yaml -javaagent:/home/site/wwwroot/opentelemetry-javaagent.jar -Xmx1024m -XX:+UseG1GC" envFieldRef: APP_NAME: "metadata.labels['app.kubernetes.io/instance']" APP_VERSION: "metadata.labels['app.kubernetes.io/version']" @@ -106,7 +110,7 @@ microservice-chart: RECEIPT_QUEUE_CONN_STRING: "receipts-storage-account-connection-string" OCP_APIM_SUBSCRIPTION_KEY: "shared-apim-d-subscription-key" COSMOS_RECEIPT_KEY: "cosmos-receipt-pkey" - ELASTIC_APM_SECRET_TOKEN: 'elastic-apm-secret-token' + OTEL_EXPORTER_OTLP_HEADERS: 'elastic-otl-secret-token' keyvault: name: "pagopa-d-receipts-kv" tenantId: "7788edaf-0346-4068-9d79-c868aed15b3d" diff --git a/helm/values-prod.yaml b/helm/values-prod.yaml index bfb441c5..638ae00a 100644 --- a/helm/values-prod.yaml +++ b/helm/values-prod.yaml @@ -89,12 +89,16 @@ microservice-chart: COSMOS_RECEIPT_CONTAINER_NAME: 'receipts' BLOB_STORAGE_ACCOUNT_ENDPOINT: 'https://pagopapweureceiptsfnsa.blob.core.windows.net' BLOB_STORAGE_CONTAINER_NAME: 'pagopa-p-weu-receipts-azure-blob-receipt-st-attach' - ELASTIC_APM_SERVICE_NAME: "pagopareceiptpdfgeneratorapm" - ELASTIC_APM_APPLICATION_PACKAGES: "it.gov.pagopa.receipt.pdf.generator" - ELASTIC_APM_SERVER_URL: "http://quickstart-apm-http.elastic-system.svc:8200" - ELASTIC_APM_LOG_SENDING: "false" ENABLE_ECS_CONSOLE: "true" - JAVA_TOOL_OPTIONS: "-javaagent:/home/site/wwwroot/jmx_prometheus_javaagent-0.19.0.jar=12345:/home/site/wwwroot/config.yaml -javaagent:/home/site/wwwroot/elastic-apm-agent.jar" + CONSOLE_LOG_THRESHOLD: "DEBUG" + CONSOLE_LOG_PATTERN: "%d{HH:mm:ss.SSS}[%thread]%-5level%logger{36}-%msg%n" + CONSOLE_LOG_CHARSET: "UTF-8" + ECS_SERVICE_NAME: "pagopareceiptpdfgeneratorotl" + OTEL_RESOURCE_ATTRIBUTES: "service.name=pagopareceiptpdfgeneratorotl,deployment.environment=prod" + OTEL_EXPORTER_OTLP_ENDPOINT: "http://otel-collector.elastic-system.svc:4317" + OTEL_LOGS_EXPORTER: none + OTEL_TRACES_SAMPLER: "always_on" + JAVA_TOOL_OPTIONS: "-javaagent:/home/site/wwwroot/jmx_prometheus_javaagent-0.19.0.jar=12345:/home/site/wwwroot/config.yaml -javaagent:/home/site/wwwroot/opentelemetry-javaagent.jar -Xmx1024m -XX:+UseG1GC" envFieldRef: APP_NAME: "metadata.labels['app.kubernetes.io/instance']" APP_VERSION: "metadata.labels['app.kubernetes.io/version']" @@ -105,7 +109,7 @@ microservice-chart: RECEIPT_QUEUE_CONN_STRING: "receipts-storage-account-connection-string" OCP_APIM_SUBSCRIPTION_KEY: 'shared-apim-p-subscription-key' COSMOS_RECEIPT_KEY: "cosmos-receipt-pkey" - ELASTIC_APM_SECRET_TOKEN: 'elastic-apm-secret-token' + OTEL_EXPORTER_OTLP_HEADERS: 'elastic-otl-secret-token' keyvault: name: "pagopa-p-receipts-kv" tenantId: "7788edaf-0346-4068-9d79-c868aed15b3d" diff --git a/helm/values-uat.yaml b/helm/values-uat.yaml index 413c8603..3e167e41 100644 --- a/helm/values-uat.yaml +++ b/helm/values-uat.yaml @@ -90,12 +90,16 @@ microservice-chart: COSMOS_RECEIPT_CONTAINER_NAME: 'receipts' BLOB_STORAGE_ACCOUNT_ENDPOINT: 'https://pagopauweureceiptsfnsa.blob.core.windows.net' BLOB_STORAGE_CONTAINER_NAME: 'pagopa-u-weu-receipts-azure-blob-receipt-st-attach' - ELASTIC_APM_SERVICE_NAME: "pagopareceiptpdfgeneratorapm" - ELASTIC_APM_APPLICATION_PACKAGES: "it.gov.pagopa.receipt.pdf.generator" - ELASTIC_APM_SERVER_URL: "http://quickstart-apm-http.elastic-system.svc:8200" - ELASTIC_APM_LOG_SENDING: "false" ENABLE_ECS_CONSOLE: "true" - JAVA_TOOL_OPTIONS: "-javaagent:/home/site/wwwroot/jmx_prometheus_javaagent-0.19.0.jar=12345:/home/site/wwwroot/config.yaml -javaagent:/home/site/wwwroot/elastic-apm-agent.jar -Xmx1512m -XX:+UseG1GC" + CONSOLE_LOG_THRESHOLD: "DEBUG" + CONSOLE_LOG_PATTERN: "%d{HH:mm:ss.SSS}[%thread]%-5level%logger{36}-%msg%n" + CONSOLE_LOG_CHARSET: "UTF-8" + ECS_SERVICE_NAME: "pagopareceiptpdfgeneratorotl" + OTEL_RESOURCE_ATTRIBUTES: "service.name=pagopareceiptpdfgeneratorotl,deployment.environment=uat" + OTEL_EXPORTER_OTLP_ENDPOINT: "http://otel-collector.elastic-system.svc:4317" + OTEL_LOGS_EXPORTER: none + OTEL_TRACES_SAMPLER: "always_on" + JAVA_TOOL_OPTIONS: "-javaagent:/home/site/wwwroot/jmx_prometheus_javaagent-0.19.0.jar=12345:/home/site/wwwroot/config.yaml -javaagent:/home/site/wwwroot/opentelemetry-javaagent.jar -Xmx1024m -XX:+UseG1GC" envFieldRef: APP_NAME: "metadata.labels['app.kubernetes.io/instance']" APP_VERSION: "metadata.labels['app.kubernetes.io/version']" @@ -106,7 +110,7 @@ microservice-chart: RECEIPT_QUEUE_CONN_STRING: "receipts-storage-account-connection-string" OCP_APIM_SUBSCRIPTION_KEY: 'shared-apim-u-subscription-key' COSMOS_RECEIPT_KEY: "cosmos-receipt-pkey" - ELASTIC_APM_SECRET_TOKEN: 'elastic-apm-secret-token' + OTEL_EXPORTER_OTLP_HEADERS: 'elastic-otl-secret-token' keyvault: name: "pagopa-u-receipts-kv" tenantId: "7788edaf-0346-4068-9d79-c868aed15b3d" diff --git a/pom.xml b/pom.xml index ae540fa3..f9cf2239 100644 --- a/pom.xml +++ b/pom.xml @@ -195,6 +195,26 @@ 1.4.7 + + org.slf4j + slf4j-api + 2.0.9 + + + + co.elastic.logging + logback-ecs-encoder + 1.5.0 + + + + + + org.codehaus.janino + janino + 2.6.1 + + diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 95665b6d..a3a63948 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -1,6 +1,8 @@ + + ${CONSOLE_LOG_THRESHOLD} @@ -15,7 +17,7 @@ ${ECS_SERVICE_NAME} - ${ECS_SERVICE_VERSION} + ${version} ${ENV} From 0375ea6041000634691e4aeb5eeb94a05654d846 Mon Sep 17 00:00:00 2001 From: giomella Date: Fri, 8 Sep 2023 14:28:06 +0200 Subject: [PATCH 2/2] [PRDP-133] refactor log --- .../pdf/generator/GenerateReceiptPdf.java | 48 +++++-------------- .../pagopa/receipt/pdf/generator/Info.java | 8 ++-- .../generator/ManageReceiptPoisonQueue.java | 37 ++++++-------- .../RetryReviewedPoisonMessages.java | 11 ++--- .../service/GenerateReceiptPdfService.java | 48 +++++++++---------- 5 files changed, 60 insertions(+), 92 deletions(-) diff --git a/src/main/java/it/gov/pagopa/receipt/pdf/generator/GenerateReceiptPdf.java b/src/main/java/it/gov/pagopa/receipt/pdf/generator/GenerateReceiptPdf.java index 8023b0c8..faa1108d 100644 --- a/src/main/java/it/gov/pagopa/receipt/pdf/generator/GenerateReceiptPdf.java +++ b/src/main/java/it/gov/pagopa/receipt/pdf/generator/GenerateReceiptPdf.java @@ -29,6 +29,8 @@ */ public class GenerateReceiptPdf { + private final Logger logger = LoggerFactory.getLogger(GenerateReceiptPdf.class); + /** * This function will be invoked when a Queue trigger occurs * # @@ -93,11 +95,8 @@ public void processGenerateReceipt( } List itemsToNotify = new ArrayList<>(); - Logger logger = LoggerFactory.getLogger(getClass()); - - String logMsg = String.format("[%s] function called at %s for bizEvent with id %s", + logger.info("[{}] function called at {} for bizEvent with id {}", context.getFunctionName(), LocalDateTime.now(), bizEvent.getId()); - logger.info(logMsg); //Retrieve receipt's data from CosmosDB Receipt receipt; @@ -130,32 +129,21 @@ public void processGenerateReceipt( if (debtorCF != null || payerCF != null) { boolean generateOnlyDebtor = payerCF == null || payerCF.equals(debtorCF); - - String log = String.format( - "[%s] Generating pdf for Receipt with id %s", + logger.info("[{}] Generating pdf for Receipt with id {}", context.getFunctionName(), - receipt.getEventId() - ); - logger.info(log); + receipt.getEventId()); //Generate and save PDF - PdfGeneration pdfGeneration = service.handlePdfsGeneration(generateOnlyDebtor, receipt, bizEvent, debtorCF, payerCF, logger); - - - log = String.format( - "[%s] Saving pdf for Receipt with id %s to the blob storage", + PdfGeneration pdfGeneration = service.handlePdfsGeneration(generateOnlyDebtor, receipt, bizEvent, debtorCF, payerCF); + logger.info("[{}] Saving pdf for Receipt with id {} to the blob storage", context.getFunctionName(), - receipt.getEventId() - ); - logger.info(log); + receipt.getEventId()); //Write PDF blob storage metadata on receipt numberOfSavedPdfs = service.addPdfsMetadataToReceipt(receipt, pdfGeneration); //Verify PDF generation success service.verifyPdfGeneration(bizEventMessage, requeueMessage, logger, receipt, generateOnlyDebtor, pdfGeneration); - - } else { String errorMessage = String.format( "[%s] Error processing receipt with id %s : both debtor's and payer's fiscal code are null", @@ -169,34 +157,24 @@ public void processGenerateReceipt( errorMessage, bizEventMessage, receipt, - requeueMessage, - logger + requeueMessage ); } //Add receipt to items to be saved to CosmosDB itemsToNotify.add(receipt); - } else if (receipt != null) { - String errorMessage = String.format( - "[%s] Receipt with id %s not in INSERTED or RETRY", + logger.info("[{}] Receipt with id {} not in INSERTED or RETRY", context.getFunctionName(), - receipt.getEventId() - ); - logger.info(errorMessage); + receipt.getEventId()); } - - if (!itemsToNotify.isEmpty()) { - String log = String.format( - "[%s] Receipt with id %s being saved with status %s and with %s pdfs", + logger.info("[{}] Receipt with id {} being saved with status {} and with {} pdfs", context.getFunctionName(), receipt.getEventId(), receipt.getStatus(), - numberOfSavedPdfs - ); - logger.info(log); + numberOfSavedPdfs); documentdb.setValue(itemsToNotify); } } diff --git a/src/main/java/it/gov/pagopa/receipt/pdf/generator/Info.java b/src/main/java/it/gov/pagopa/receipt/pdf/generator/Info.java index 0aaed16f..7f4724a3 100644 --- a/src/main/java/it/gov/pagopa/receipt/pdf/generator/Info.java +++ b/src/main/java/it/gov/pagopa/receipt/pdf/generator/Info.java @@ -22,6 +22,8 @@ */ public class Info { + private final Logger logger = LoggerFactory.getLogger(Info.class); + /** * This function will be invoked when a Http Trigger occurs * @@ -35,13 +37,11 @@ public HttpResponseMessage run ( authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage> request, final ExecutionContext context) { - org.slf4j.Logger logger = LoggerFactory.getLogger(getClass()); - return request.createResponseBuilder(HttpStatus.OK) - .body(getInfo(logger)) + .body(getInfo()) .build(); } - public synchronized AppInfo getInfo(Logger logger) { + public synchronized AppInfo getInfo() { String version = null; String name = null; try (InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("application.properties")) { diff --git a/src/main/java/it/gov/pagopa/receipt/pdf/generator/ManageReceiptPoisonQueue.java b/src/main/java/it/gov/pagopa/receipt/pdf/generator/ManageReceiptPoisonQueue.java index e9d76c61..6a712d0d 100644 --- a/src/main/java/it/gov/pagopa/receipt/pdf/generator/ManageReceiptPoisonQueue.java +++ b/src/main/java/it/gov/pagopa/receipt/pdf/generator/ManageReceiptPoisonQueue.java @@ -27,6 +27,8 @@ */ public class ManageReceiptPoisonQueue { + private final Logger logger = LoggerFactory.getLogger(ManageReceiptPoisonQueue.class); + /** * This function will be invoked when a Queue trigger occurs * @@ -53,33 +55,25 @@ public void processManageReceiptPoisonQueue( OutputBinding documentdb, final ExecutionContext context) { - Logger logger = LoggerFactory.getLogger(getClass()); BizEvent bizEvent = null; - String logMsg = String.format("[%s] function called at %s for payload %s", - context.getFunctionName(), LocalDateTime.now(), errorMessage); - logger.info(logMsg); + logger.info("[{}] function called at {} for payload {}", context.getFunctionName(), LocalDateTime.now(), errorMessage); boolean retriableContent = false; try { //attempt to Map queue bizEventMessage to BizEvent bizEvent = ObjectMapperUtils.mapString(errorMessage, BizEvent.class); - logMsg = String.format("[%s] function called at %s recognized as valid BizEvent" + - "with id %s", + logger.info("[{}] function called at {} recognized as valid BizEvent with id {}", context.getFunctionName(), LocalDateTime.now(), bizEvent.getId()); - logger.info(logMsg); if (bizEvent.getAttemptedPoisonRetry()) { - logMsg = String.format("[%s] function called at %s for event with id %s" + - " has ingestion already retried, sending to review", + logger.info("[{}] function called at {} for event with id {} has ingestion already retried, sending to review", context.getFunctionName(), LocalDateTime.now(), bizEvent.getId()); - logger.info(logMsg); } else { retriableContent = true; } } catch (JsonProcessingException e) { - logMsg = String.format("[%s] received parsing error in the" + - " function called at %s for payload %s", context.getFunctionName(), LocalDateTime.now(), errorMessage); - logger.info(logMsg); + logger.error("[{}] received parsing error in the function called at {} for payload {}", + context.getFunctionName(), LocalDateTime.now(), errorMessage, e); } if (retriableContent) { @@ -95,22 +89,21 @@ public void processManageReceiptPoisonQueue( sendMessageResult.getStatusCode()); } } catch (Exception e) { - logMsg = String.format("[%s] error for the function called at %s when attempting" + - "to requeue BizEvent wit id %s, saving to cosmos for review. Call Error %s", - context.getFunctionName(), LocalDateTime.now(), bizEvent.getId(), e.getMessage()); - logger.info(logMsg); - saveToDocument(context, errorMessage, documentdb, logger); + logger.error("[{}] error for the function called at {} when attempting" + + "to requeue BizEvent wit id {}, saving to cosmos for review", + context.getFunctionName(), LocalDateTime.now(), bizEvent.getId(), e); + saveToDocument(context, errorMessage, documentdb); } } else { - saveToDocument(context, errorMessage, documentdb, logger); + saveToDocument(context, errorMessage, documentdb); } } private void saveToDocument(ExecutionContext context, String errorMessage, - OutputBinding documentdb, Logger logger) { - logger.info(String.format("[%s] saving new entry to the retry error to review with payload %s", - context.getFunctionName(), errorMessage)); + OutputBinding documentdb) { + logger.info("[{}] saving new entry to the retry error to review with payload {}", + context.getFunctionName(), errorMessage); documentdb.setValue(ReceiptError.builder().messagePayload(errorMessage) .status(ReceiptErrorStatusType.TO_REVIEW).build()); } diff --git a/src/main/java/it/gov/pagopa/receipt/pdf/generator/RetryReviewedPoisonMessages.java b/src/main/java/it/gov/pagopa/receipt/pdf/generator/RetryReviewedPoisonMessages.java index 8dd2d494..d31bf59a 100644 --- a/src/main/java/it/gov/pagopa/receipt/pdf/generator/RetryReviewedPoisonMessages.java +++ b/src/main/java/it/gov/pagopa/receipt/pdf/generator/RetryReviewedPoisonMessages.java @@ -25,6 +25,8 @@ */ public class RetryReviewedPoisonMessages { + private final Logger logger = LoggerFactory.getLogger(RetryReviewedPoisonMessages.class); + /** * This function will be invoked when an CosmosDB trigger occurs * @@ -58,11 +60,9 @@ public void processRetryReviewedPoisonMessages( final ExecutionContext context) { List itemsDone = new ArrayList<>(); - Logger logger = LoggerFactory.getLogger(getClass()); - String msg = String.format("[%s] documentCaptorValue stat %s function - num errors reviewed triggered %d", + logger.debug("[{}] documentCaptorValue stat {} function - num errors reviewed triggered {}", context.getFunctionName(), context.getInvocationId(), items.size()); - logger.debug(msg); ReceiptQueueClientImpl queueService = ReceiptQueueClientImpl.getInstance(); @@ -86,9 +86,8 @@ public void processRetryReviewedPoisonMessages( } catch (Exception e) { //Error info - msg = String.format("[%s] Error to process receiptError with id %s", - context.getFunctionName(), receiptError.getId()); - logger.error(msg, e); + logger.error("[{}] Error to process receiptError with id {}", + context.getFunctionName(), receiptError.getId(), e); receiptError.setMessageError(e.getMessage()); receiptError.setStatus(ReceiptErrorStatusType.TO_REVIEW); } diff --git a/src/main/java/it/gov/pagopa/receipt/pdf/generator/service/GenerateReceiptPdfService.java b/src/main/java/it/gov/pagopa/receipt/pdf/generator/service/GenerateReceiptPdfService.java index 0f450e79..f62a15df 100644 --- a/src/main/java/it/gov/pagopa/receipt/pdf/generator/service/GenerateReceiptPdfService.java +++ b/src/main/java/it/gov/pagopa/receipt/pdf/generator/service/GenerateReceiptPdfService.java @@ -19,6 +19,7 @@ import lombok.NoArgsConstructor; import org.apache.http.HttpStatus; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.*; import java.net.URL; @@ -28,6 +29,8 @@ @NoArgsConstructor public class GenerateReceiptPdfService { + private final Logger logger = LoggerFactory.getLogger(GenerateReceiptPdfService.class); + private static final int MAX_NUMBER_RETRY = Integer.parseInt(System.getenv().getOrDefault("COSMOS_RECEIPT_QUEUE_MAX_RETRY", "5")); /** @@ -40,7 +43,7 @@ public class GenerateReceiptPdfService { * @param payerCF Payer fiscal code * @return PdfGeneration object with the PDF metadata from the Blob Storage or relatives error messages */ - public PdfGeneration handlePdfsGeneration(boolean generateOnlyDebtor, Receipt receipt, BizEvent bizEvent, String debtorCF, String payerCF, Logger logger) { + public PdfGeneration handlePdfsGeneration(boolean generateOnlyDebtor, Receipt receipt, BizEvent bizEvent, String debtorCF, String payerCF) { PdfGeneration pdfGeneration = new PdfGeneration(); if (generateOnlyDebtor) { @@ -50,7 +53,7 @@ public PdfGeneration handlePdfsGeneration(boolean generateOnlyDebtor, Receipt re receipt.getMdAttach().getUrl() == null || receipt.getMdAttach().getUrl().isEmpty()) ) { - pdfGeneration.setDebtorMetadata(generatePdf(bizEvent, debtorCF, true, logger)); + pdfGeneration.setDebtorMetadata(generatePdf(bizEvent, debtorCF, true)); } } else { //Generate debtor's partial PDF @@ -59,7 +62,7 @@ public PdfGeneration handlePdfsGeneration(boolean generateOnlyDebtor, Receipt re receipt.getMdAttach().getUrl() == null || receipt.getMdAttach().getUrl().isEmpty()) ) { - pdfGeneration.setDebtorMetadata(generatePdf(bizEvent, debtorCF, false, logger)); + pdfGeneration.setDebtorMetadata(generatePdf(bizEvent, debtorCF, false)); } //Generate payer's complete PDF if (payerCF != null && @@ -67,7 +70,7 @@ public PdfGeneration handlePdfsGeneration(boolean generateOnlyDebtor, Receipt re receipt.getMdAttachPayer().getUrl() == null || receipt.getMdAttachPayer().getUrl().isEmpty()) ) { - pdfGeneration.setPayerMetadata(generatePdf(bizEvent, payerCF, true, logger)); + pdfGeneration.setPayerMetadata(generatePdf(bizEvent, payerCF, true)); } } @@ -82,7 +85,7 @@ public PdfGeneration handlePdfsGeneration(boolean generateOnlyDebtor, Receipt re * @param completeTemplate Boolean that indicates what template to use * @return PDF metadata retrieved from Blob Storage or relative error message */ - private PdfMetadata generatePdf(BizEvent bizEvent, String fiscalCode, boolean completeTemplate, Logger logger) { + private PdfMetadata generatePdf(BizEvent bizEvent, String fiscalCode, boolean completeTemplate) { PdfEngineRequest request = new PdfEngineRequest(); PdfMetadata response = new PdfMetadata(); @@ -109,7 +112,7 @@ private PdfMetadata generatePdf(BizEvent bizEvent, String fiscalCode, boolean co //Save the PDF String pdfFileName = bizEvent.getId() + fiscalCode; - handleSaveToBlobStorage(pdfEngineResponse, response, pdfFileName, logger); + handleSaveToBlobStorage(pdfEngineResponse, response, pdfFileName); } else { //Handle PDF generation error @@ -118,9 +121,11 @@ private PdfMetadata generatePdf(BizEvent bizEvent, String fiscalCode, boolean co } } catch (Exception e) { + String errMsg = "File template not found, error: "; + logger.error(errMsg, e); //Handle file not found error response.setStatusCode(HttpStatus.SC_INTERNAL_SERVER_ERROR); - response.setErrorMessage("File template not found, error: " + e); + response.setErrorMessage(errMsg + e); } return response; @@ -132,7 +137,7 @@ private PdfMetadata generatePdf(BizEvent bizEvent, String fiscalCode, boolean co * @param response Pdf metadata containing response * @param pdfFileName Filename composed of biz-event id and user fiscal code */ - private void handleSaveToBlobStorage(PdfEngineResponse pdfEngineResponse, PdfMetadata response, String pdfFileName, Logger logger) { + private void handleSaveToBlobStorage(PdfEngineResponse pdfEngineResponse, PdfMetadata response, String pdfFileName) { BlobStorageResponse blobStorageResponse; ReceiptBlobClientImpl blobClient = ReceiptBlobClientImpl.getInstance(); @@ -158,12 +163,14 @@ private void handleSaveToBlobStorage(PdfEngineResponse pdfEngineResponse, PdfMet } } catch (Exception e) { + String errMsg = "Error saving pdf to blob storage : "; + logger.error(errMsg, e); //Handle Blob storage error response.setStatusCode(ReasonErrorCode.ERROR_BLOB_STORAGE.getCode()); - response.setErrorMessage("Error saving pdf to blob storage : " + e); + response.setErrorMessage(errMsg + e); } - deleteTempFolderAndFile(tempPdfPath, tempDirectoryPath, logger); + deleteTempFolderAndFile(tempPdfPath, tempDirectoryPath); } /** @@ -171,18 +178,14 @@ private void handleSaveToBlobStorage(PdfEngineResponse pdfEngineResponse, PdfMet * * @param tempPdfPath Path to the temp PDF file * @param tempDirectoryPath Path to the temp directory containing the PDF file - * @param logger Logger */ - private static void deleteTempFolderAndFile(String tempPdfPath, String tempDirectoryPath, Logger logger) { - String logMsg; - + private void deleteTempFolderAndFile(String tempPdfPath, String tempDirectoryPath) { File tempFile = new File(tempPdfPath); if (tempFile.exists()) { try { Files.delete(tempFile.toPath()); } catch (IOException e) { - logMsg = String.format("Error deleting temporary pdf file from file system: %s", e); - logger.warn(logMsg); + logger.warn("Error deleting temporary pdf file from file system", e); } } @@ -191,8 +194,7 @@ private static void deleteTempFolderAndFile(String tempPdfPath, String tempDirec try { Files.delete(tempDirectory.toPath()); } catch (IOException e) { - logMsg = String.format("Error deleting temporary pdf directory from file system: %s", e); - logger.warn(logMsg); + logger.warn("Error deleting temporary pdf directory from file system", e); } } } @@ -276,8 +278,7 @@ public void verifyPdfGeneration(String bizEventMessage, OutputBinding re errorMessage, bizEventMessage, receipt, - requeueMessage, - logger + requeueMessage ); } } @@ -313,7 +314,6 @@ private static PdfMetadata returnFailedResponse(PdfMetadata responseDebtorGen, P * @param bizEventMessage BizEvent message from queue * @param receipt Receipt to be saved on CosmosDB * @param requeueMessage Output Binding to save the bizEventMessage - * @param logger Logger */ public void handleErrorGeneratingReceipt( ReceiptStatusType receiptStatusType, @@ -321,8 +321,7 @@ public void handleErrorGeneratingReceipt( String errorMessage, String bizEventMessage, Receipt receipt, - OutputBinding requeueMessage, - Logger logger) { + OutputBinding requeueMessage) { receipt.setStatus(receiptStatusType); receipt.setNumRetry(receipt.getNumRetry() + 1); @@ -332,7 +331,6 @@ public void handleErrorGeneratingReceipt( //Re-queue the message requeueMessage.setValue(bizEventMessage); - String logMessage = "Error generating PDF at " + LocalDateTime.now() + " : " + errorMessage; - logger.error(logMessage); + logger.error("Error generating PDF at {} : {}", LocalDateTime.now(), errorMessage); } }