aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/framework/logging/CsvStatisticLogger.java
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/pdfas/framework/logging/CsvStatisticLogger.java')
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/framework/logging/CsvStatisticLogger.java105
1 files changed, 105 insertions, 0 deletions
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/framework/logging/CsvStatisticLogger.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/framework/logging/CsvStatisticLogger.java
new file mode 100644
index 0000000..a295a7b
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/framework/logging/CsvStatisticLogger.java
@@ -0,0 +1,105 @@
+/**
+ * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright>
+ * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a
+ * joint initiative of the Federal Chancellery Austria and Graz University of
+ * Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ */
+package at.gv.egiz.pdfas.framework.logging;
+
+import org.apache.commons.logging.Log;
+
+import at.gv.egiz.pdfas.api.exceptions.PdfAsException;
+import at.gv.egiz.pdfas.exceptions.external.ExternalErrorException;
+import at.gv.egiz.pdfas.utils.CsvUtils;
+
+/**
+ * A statistic logger implementation that prodoces csv based logging entries.
+ *
+ * @author Datentechnik Innovation GmbH
+ */
+public class CsvStatisticLogger implements StatisticLogger {
+
+ /**
+ * The underlying logging implementation.
+ */
+ private Log log;
+
+ /**
+ * A csv value indication error conditions.
+ */
+ private static final String VALUE_ERROR = "ERROR";
+
+ /**
+ * A csv value indication success conditions.
+ */
+ private static final String VALUE_OK = "OK";
+
+ /**
+ * Creates a new instance.
+ *
+ * @param log
+ * The underlying logger.
+ */
+ CsvStatisticLogger(Log log) {
+ this.log = log;
+ }
+
+ public void log(StatisticData data) {
+ if (isEnabled()) {
+ StringBuffer msg = new StringBuffer();
+
+ // add escapted fields
+ msg.append(CsvUtils.escapeCsvValue(data.operation)).append(CsvUtils.DEFAULT_DELIMITER);
+ msg.append(CsvUtils.escapeCsvValue(data.signatureMode)).append(CsvUtils.DEFAULT_DELIMITER);
+ msg.append(CsvUtils.escapeCsvValue(data.connector)).append(CsvUtils.DEFAULT_DELIMITER);
+ msg.append(CsvUtils.escapeCsvValue(data.signatureProfileId)).append(CsvUtils.DEFAULT_DELIMITER);
+ msg.append(CsvUtils.escapeCsvValue(data.fileSize)).append(CsvUtils.DEFAULT_DELIMITER);
+ msg.append(CsvUtils.escapeCsvValue(data.userAgent)).append(CsvUtils.DEFAULT_DELIMITER);
+
+ // handle error conditions
+ Integer errorCode = null;
+ String externalErrorCode = null;
+ if (data.exception != null) {
+ msg.append(VALUE_ERROR).append(CsvUtils.DEFAULT_DELIMITER);
+ if (data.exception instanceof PdfAsException) {
+ PdfAsException pdfAsException = (PdfAsException) data.exception;
+ errorCode = pdfAsException.getErrorCode();
+ if (pdfAsException instanceof ExternalErrorException) {
+ externalErrorCode = ((ExternalErrorException) pdfAsException).getExternalErrorCode();
+ }
+ }
+ msg.append(CsvUtils.escapeCsvValue(data.exception.getClass().getName())).append(CsvUtils.DEFAULT_DELIMITER);
+ } else {
+ msg.append(VALUE_OK).append(CsvUtils.DEFAULT_DELIMITER).append(CsvUtils.DEFAULT_DELIMITER);
+ }
+ msg.append(CsvUtils.escapeCsvValue(errorCode)).append(CsvUtils.DEFAULT_DELIMITER);
+ msg.append(CsvUtils.escapeCsvValue(externalErrorCode)).append(CsvUtils.DEFAULT_DELIMITER);
+
+ msg.append(CsvUtils.escapeCsvValue(data.duration));
+
+ log.info(msg);
+ }
+ }
+
+ public boolean isEnabled() {
+ return log.isInfoEnabled();
+ }
+
+}