gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libeufin] branch master updated (30e44180 -> f6c766f6)


From: gnunet
Subject: [libeufin] branch master updated (30e44180 -> f6c766f6)
Date: Fri, 19 Jan 2024 15:25:44 +0100

This is an automated email from the git hooks/post-receive script.

antoine pushed a change to branch master
in repository libeufin.

    from 30e44180 v0.9.4
     new 41362147 Improve log format and add log level cli flag
     new 6c4245b6 Fix copyrights
     new f6c766f6 Remove development features from libeufin-nexus and hide 
options that will be removed in the next version

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../tech/libeufin/bank/BankIntegrationApi.kt       |  2 +-
 bank/src/main/kotlin/tech/libeufin/bank/Config.kt  |  4 --
 .../main/kotlin/tech/libeufin/bank/Constants.kt    |  2 +-
 .../main/kotlin/tech/libeufin/bank/CoreBankApi.kt  |  2 +-
 bank/src/main/kotlin/tech/libeufin/bank/Main.kt    | 26 +++------
 .../main/kotlin/tech/libeufin/bank/TalerCommon.kt  |  4 --
 .../main/kotlin/tech/libeufin/bank/TalerMessage.kt |  2 +-
 .../kotlin/tech/libeufin/bank/WireGatewayApi.kt    |  4 +-
 .../main/kotlin/tech/libeufin/bank/auth/auth.kt    |  7 +--
 .../main/kotlin/tech/libeufin/bank/db/Database.kt  |  2 +-
 .../tech/libeufin/bank/db/NotificationWatcher.kt   |  4 +-
 .../kotlin/tech/libeufin/bank/db/TransactionDAO.kt |  2 +-
 bank/src/main/kotlin/tech/libeufin/bank/helpers.kt |  4 --
 bank/src/main/resources/logback.xml                | 25 +++------
 bank/src/test/kotlin/StatsTest.kt                  | 34 ++++++------
 integration/src/main/kotlin/Main.kt                | 34 ++++++------
 .../main/kotlin/tech/libeufin/nexus/Database.kt    | 18 +++++++
 .../src/main/kotlin/tech/libeufin/nexus/DbInit.kt  | 20 ++++++-
 .../main/kotlin/tech/libeufin/nexus/EbicsFetch.kt  | 61 ++++++++++++----------
 .../main/kotlin/tech/libeufin/nexus/EbicsSetup.kt  | 26 +--------
 .../main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt | 36 ++-----------
 .../main/kotlin/tech/libeufin/nexus/Iso20022.kt    | 18 +++++++
 nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt  |  2 +-
 .../kotlin/tech/libeufin/nexus/ebics/Ebics2.kt     |  4 +-
 .../kotlin/tech/libeufin/nexus/ebics/Ebics3.kt     | 18 +++++++
 .../tech/libeufin/nexus/ebics/EbicsCommon.kt       | 10 ++--
 nexus/src/main/resources/logback.xml               | 23 +++-----
 nexus/src/test/kotlin/Common.kt                    | 19 +++++++
 nexus/src/test/kotlin/ConfigLoading.kt             | 19 +++++++
 nexus/src/test/kotlin/DatabaseTest.kt              | 20 ++++++-
 nexus/src/test/kotlin/Ebics.kt                     | 19 +++++++
 nexus/src/test/kotlin/Keys.kt                      | 19 +++++++
 nexus/src/test/kotlin/MySerializers.kt             | 19 +++++++
 nexus/src/test/kotlin/Parsing.kt                   | 19 +++++++
 util/src/main/kotlin/Cli.kt                        | 20 +++++--
 util/src/main/kotlin/Config.kt                     | 19 +++++++
 util/src/main/kotlin/CryptoUtil.kt                 |  2 +-
 util/src/main/kotlin/DB.kt                         |  2 +-
 util/src/main/kotlin/Ebics.kt                      |  2 +-
 util/src/main/kotlin/EbicsOrderUtil.kt             |  2 +-
 util/src/main/kotlin/Encoding.kt                   | 29 +++++-----
 util/src/main/kotlin/HTTP.kt                       | 21 +++++++-
 util/src/main/kotlin/IbanPayto.kt                  | 21 +++++++-
 util/src/main/kotlin/TalerConfig.kt                |  2 +-
 util/src/main/kotlin/XMLUtil.kt                    |  4 +-
 util/src/main/kotlin/iban.kt                       | 19 +++++++
 util/src/main/kotlin/strings.kt                    |  8 +--
 util/src/main/kotlin/time.kt                       | 10 ++--
 util/src/test/kotlin/CryptoUtilTest.kt             |  2 +-
 util/src/test/kotlin/EbicsMessagesTest.kt          | 19 +++++++
 util/src/test/kotlin/EbicsOrderUtilTest.kt         | 19 +++++++
 util/src/test/kotlin/PaytoTest.kt                  | 19 +++++++
 util/src/test/kotlin/SignatureDataTest.kt          | 19 +++++++
 util/src/test/kotlin/TimeTest.kt                   | 19 +++++++
 util/src/test/kotlin/XmlCombinatorsTest.kt         |  2 +-
 util/src/test/kotlin/XmlUtilTest.kt                | 26 +++++++--
 util/src/test/resources/logback.xml                | 21 --------
 57 files changed, 563 insertions(+), 272 deletions(-)
 delete mode 100644 util/src/test/resources/logback.xml

diff --git a/bank/src/main/kotlin/tech/libeufin/bank/BankIntegrationApi.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/BankIntegrationApi.kt
index 11f791aa..ae3419f4 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/BankIntegrationApi.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/BankIntegrationApi.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2023 Taler Systems S.A.
+ * Copyright (C) 2024 Taler Systems S.A.
 
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/Config.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/Config.kt
index c3f7db94..4604ad04 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/Config.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/Config.kt
@@ -23,12 +23,8 @@ import TalerConfig
 import TalerConfigError
 import kotlinx.serialization.Serializable
 import kotlinx.serialization.json.Json
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
 import tech.libeufin.util.DatabaseConfig
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.bank.Config")
-
 /**
  * Application the parsed configuration.
  */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/Constants.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/Constants.kt
index d61d767e..a1c65035 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/Constants.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/Constants.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2023 Stanisci and Dold.
+ * Copyright (C) 2024 Taler Systems S.A.
 
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt
index eb39c136..04616e88 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt
@@ -47,7 +47,7 @@ import tech.libeufin.bank.db.TransactionDAO.*
 import tech.libeufin.bank.db.WithdrawalDAO.*
 import tech.libeufin.util.*
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.bank.accountsMgmtHandlers")
+private val logger: Logger = LoggerFactory.getLogger("libeufin-bank-api")
 
 fun Routing.coreBankApi(db: Database, ctx: BankConfig) {
     get("/config") {
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/Main.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/Main.kt
index 9f543c48..89eac6d2 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/Main.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/Main.kt
@@ -16,7 +16,6 @@
  * License along with LibEuFin; see the file COPYING.  If not, see
  * <http://www.gnu.org/licenses/>
  */
-// Main HTTP handlers and related data definitions.
 
 package tech.libeufin.bank
 
@@ -58,7 +57,7 @@ import tech.libeufin.bank.db.AccountDAO.*
 import tech.libeufin.bank.db.*
 import tech.libeufin.util.*
 
-private val logger: Logger = LoggerFactory.getLogger("tech.libeufin.bank.Main")
+private val logger: Logger = LoggerFactory.getLogger("libeufin-bank")
 // Dirty local variable to stop the server in test TODO remove this ugly hack
 var engine: ApplicationEngine? = null 
 
@@ -108,7 +107,7 @@ val bodyPlugin = 
createApplicationPlugin("BodyLimitAndDecompression") {
  */
 fun Application.corebankWebApp(db: Database, ctx: BankConfig) {
     install(CallLogging) {
-        this.level = Level.DEBUG
+        this.level = Level.INFO
         this.logger = tech.libeufin.bank.logger
         this.format { call ->
             val status = call.response.status()
@@ -218,17 +217,6 @@ fun Application.corebankWebApp(db: Database, ctx: 
BankConfig) {
     }
 }
 
-class CommonOption: OptionGroup() {
-    val config by option(
-        "--config", "-c",
-        help = "Specifies the configuration file"
-    ).path(
-        mustExist = true, 
-        canBeDir = false, 
-        mustBeReadable = true,
-    ).convert { it.toString() } // TODO take path to load config
-}
-
 class BankDbInit : CliktCommand("Initialize the libeufin-bank database", name 
= "dbinit") {
     private val common by CommonOption()
     private val requestReset by option(
@@ -236,7 +224,7 @@ class BankDbInit : CliktCommand("Initialize the 
libeufin-bank database", name =
         help = "Reset database (DANGEROUS: All existing data is lost)"
     ).flag()
 
-    override fun run() = cliCmd(logger){
+    override fun run() = cliCmd(logger, common.log) {
         val config = talerConfig(common.config)
         val cfg = config.loadDbConfig()
         val ctx = config.loadBankConfig();
@@ -266,7 +254,7 @@ class BankDbInit : CliktCommand("Initialize the 
libeufin-bank database", name =
 class ServeBank : CliktCommand("Run libeufin-bank HTTP server", name = 
"serve") {
     private val common by CommonOption()
 
-    override fun run() = cliCmd(logger) {
+    override fun run() = cliCmd(logger, common.log) {
         val cfg = talerConfig(common.config)
         val ctx = cfg.loadBankConfig()
         val dbCfg = cfg.loadDbConfig()
@@ -332,7 +320,7 @@ class ChangePw : CliktCommand("Change account password", 
name = "passwd") {
         help = "Account password used for authentication"
     )
 
-    override fun run() = cliCmd(logger) {
+    override fun run() = cliCmd(logger, common.log) {
         val cfg = talerConfig(common.config)
         val ctx = cfg.loadBankConfig() 
         val dbCfg = cfg.loadDbConfig()
@@ -378,7 +366,7 @@ class EditAccount : CliktCommand(
     private val cashout_payto_uri: IbanPayTo? by option(help = "Payto URI of a 
fiant account who receive cashout amount").convert { IbanPayTo(it) }
     private val debit_threshold: TalerAmount? by option(help = "Max debit 
allowed for this account").convert { TalerAmount(it) }
  
-    override fun run() = cliCmd(logger) {
+    override fun run() = cliCmd(logger, common.log) {
         val cfg = talerConfig(common.config)
         val ctx = cfg.loadBankConfig() 
         val dbCfg = cfg.loadDbConfig()
@@ -456,7 +444,7 @@ class CreateAccount : CliktCommand(
     private val json by argument().convert { 
Json.decodeFromString<RegisterAccountRequest>(it) }.optional()
     private val options by CreateAccountOption().cooccurring()
  
-    override fun run() = cliCmd(logger) {
+    override fun run() = cliCmd(logger, common.log) {
         // TODO support setting tan
         val cfg = talerConfig(common.config)
         val ctx = cfg.loadBankConfig() 
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt
index 5f8830cb..fa135161 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt
@@ -35,10 +35,6 @@ import kotlinx.serialization.json.*
 import net.taler.common.errorcodes.TalerErrorCode
 import net.taler.wallet.crypto.Base32Crockford
 import net.taler.wallet.crypto.EncodingException
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.bank.TalerCommon")
 
 /** 32-byte Crockford's Base32 encoded data */
 @Serializable(with = Base32Crockford32B.Serializer::class)
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt
index c94fa09e..3d27fbac 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/TalerMessage.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2019 Stanisci and Dold.
+ * Copyright (C) 2024 Taler Systems S.A.
 
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/WireGatewayApi.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/WireGatewayApi.kt
index 4da9a3ab..6e832703 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/WireGatewayApi.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/WireGatewayApi.kt
@@ -29,19 +29,17 @@ import io.ktor.server.routing.*
 import io.ktor.util.pipeline.PipelineContext
 import java.time.Instant
 import net.taler.common.errorcodes.TalerErrorCode
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
 import tech.libeufin.bank.db.*
 import tech.libeufin.bank.db.ExchangeDAO.*
 import tech.libeufin.bank.auth.*
 
-private val logger: Logger = LoggerFactory.getLogger("tech.libeufin.nexus")
 
 fun Routing.wireGatewayApi(db: Database, ctx: BankConfig) {
     get("/taler-wire-gateway/config") {
         call.respond(TWGConfigResponse(
             currency = ctx.regionalCurrency
         ))
+        
         return@get
     }
     auth(db, TokenScope.readwrite) {
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt
index edb8e305..7898dad6 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2023 Stanisci and Dold.
+ * Copyright (C) 2024 Taler Systems S.A.
 
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -16,6 +16,7 @@
  * License along with LibEuFin; see the file COPYING.  If not, see
  * <http://www.gnu.org/licenses/>
  */
+
 package tech.libeufin.bank.auth
 
 import io.ktor.http.*
@@ -27,15 +28,11 @@ import io.ktor.util.pipeline.PipelineContext
 import java.time.Instant
 import net.taler.common.errorcodes.TalerErrorCode
 import net.taler.wallet.crypto.Base32Crockford
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
 import tech.libeufin.bank.db.AccountDAO.*
 import tech.libeufin.bank.db.*
 import tech.libeufin.bank.*
 import tech.libeufin.util.*
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.bank.Authentication")
-
 /** Used to store if the currenly authenticated user is admin */
 private val AUTH_IS_ADMIN = AttributeKey<Boolean>("is_admin");
 /** Used to store used auth token */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/Database.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/db/Database.kt
index e4effe00..6f692fd0 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/Database.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/Database.kt
@@ -38,7 +38,7 @@ import io.ktor.http.HttpStatusCode
 import net.taler.common.errorcodes.TalerErrorCode
 import tech.libeufin.bank.*
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.bank.Database")
+private val logger: Logger = LoggerFactory.getLogger("libeufin-bank-db")
 
 /**
  * This error occurs in case the timestamp took by the bank for some
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/NotificationWatcher.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/db/NotificationWatcher.kt
index c96a1e5d..c17ffb58 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/NotificationWatcher.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/NotificationWatcher.kt
@@ -29,7 +29,7 @@ import org.slf4j.LoggerFactory
 import tech.libeufin.util.*
 import tech.libeufin.bank.*
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.util.NotificationWatcher")
+private val logger: Logger = 
LoggerFactory.getLogger("libeufin-bank-db-watcher")
 
 /** Postgres notification collector and distributor */
 internal class NotificationWatcher(private val pgSource: PGSimpleDataSource) {
@@ -103,7 +103,7 @@ internal class NotificationWatcher(private val pgSource: 
PGSimpleDataSource) {
                             }
                         }
                     } catch (e: Exception) {
-                        logger.warn("notification_watcher failed: $e")
+                        logger.warn("$e")
                         delay(backoff.next())
                     }
                 }
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt
index a72f9743..9c21fd53 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt
@@ -26,7 +26,7 @@ import java.time.*
 import java.sql.Types
 import tech.libeufin.bank.*
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.util.TransactionDAO")
+private val logger: Logger = LoggerFactory.getLogger("libeufin-bank-tx-dao")
 
 /** Data access logic for transactions */
 class TransactionDAO(private val db: Database) {
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/helpers.kt 
b/bank/src/main/kotlin/tech/libeufin/bank/helpers.kt
index 84dc96a6..47de2b15 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/helpers.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/helpers.kt
@@ -37,15 +37,11 @@ import java.time.*
 import java.time.temporal.*
 import java.util.*
 import net.taler.common.errorcodes.TalerErrorCode
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
 import tech.libeufin.util.*
 import tech.libeufin.bank.db.*
 import tech.libeufin.bank.db.AccountDAO.*
 import tech.libeufin.bank.auth.*
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.bank.helpers")
-
 fun ApplicationCall.expectParameter(name: String) =
     parameters[name] ?: throw badRequest(
         "Missing '$name' param", 
diff --git a/bank/src/main/resources/logback.xml 
b/bank/src/main/resources/logback.xml
index 271c094c..342ce4b0 100644
--- a/bank/src/main/resources/logback.xml
+++ b/bank/src/main/resources/logback.xml
@@ -1,27 +1,16 @@
 <configuration>
     <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
-       <target>System.err</target>
+        <target>System.err</target>
         <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - 
%msg%n</pattern>
+            <pattern>%d{dd-MMM-yyyy'T'HH:mm:ss.SSS} %-5level %logger{36} - 
%msg%n</pattern>
         </encoder>
     </appender>
 
-    <logger name="tech.libeufin.bank" level="ALL"  additivity="false">
-        <appender-ref ref="STDERR" />
-    </logger>
-    <logger name="tech.libeufin.util" level="ALL"  additivity="false">
-        <appender-ref ref="STDERR" />
-    </logger>
-    <logger name="tech.libeufin.nexus" level="ALL"  additivity="false">
-        <appender-ref ref="STDERR" />
-    </logger>
+    <logger name="io.netty" level="WARN" />
+    <logger name="ktor" level="WARN" />
+    <logger name="com.zaxxer.hikari" level="OFF" />
 
-    <logger name="io.netty" level="INFO" />
-    <logger name="ktor" level="TRACE" />
-    <logger name="Exposed" level="INFO" />
-
-    <root level="WARN">
+    <root level="DEBUG">
         <appender-ref ref="STDERR" />
     </root>
-
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/bank/src/test/kotlin/StatsTest.kt 
b/bank/src/test/kotlin/StatsTest.kt
index 981eb34d..da239674 100644
--- a/bank/src/test/kotlin/StatsTest.kt
+++ b/bank/src/test/kotlin/StatsTest.kt
@@ -1,21 +1,21 @@
 /*
-* This file is part of LibEuFin.
-* Copyright (C) 2019 Stanisci and Dold.
-
-* LibEuFin is free software; you can redistribute it and/or modify
-* it under the terms of the GNU Affero General Public License as
-* published by the Free Software Foundation; either version 3, or
-* (at your option) any later version.
-
-* LibEuFin is distributed in the hope that it will be useful, but
-* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-* or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
-* Public License for more details.
-
-* You should have received a copy of the GNU Affero General Public
-* License along with LibEuFin; see the file COPYING.  If not, see
-* <http://www.gnu.org/licenses/>
-*/
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
 
 import io.ktor.client.request.*
 import io.ktor.client.statement.*
diff --git a/integration/src/main/kotlin/Main.kt 
b/integration/src/main/kotlin/Main.kt
index 0dcd4259..1eaa6f28 100644
--- a/integration/src/main/kotlin/Main.kt
+++ b/integration/src/main/kotlin/Main.kt
@@ -80,6 +80,8 @@ class Cli : CliktCommand("Run integration tests on banks 
provider") {
         runBlocking {
             Path("test/$name").createDirectories()
             val conf = "conf/$name.conf"
+            val log = "DEBUG"
+            val flags = " -c $conf -L $log"
             val cfg = loadConfig(conf)
 
             val clientKeysPath = Path(cfg.requireString("nexus-ebics", 
"client_private_keys_file"))
@@ -88,8 +90,8 @@ class Cli : CliktCommand("Run integration tests on banks 
provider") {
             var hasClientKeys = clientKeysPath.exists()
             var hasBankKeys = bankKeysPath.exists()
 
-            if (ask("Reset DB ? y/n>") == "y") nexusCmd.test("dbinit -r -c 
$conf").assertOk()
-            else  nexusCmd.test("dbinit -c $conf").assertOk()
+            if (ask("Reset DB ? y/n>") == "y") nexusCmd.test("dbinit -r 
$flags").assertOk()
+            else  nexusCmd.test("dbinit $flags").assertOk()
             val nexusDb = NexusDb("postgresql:///libeufincheck")
 
             when (kind) {
@@ -106,27 +108,27 @@ class Cli : CliktCommand("Run integration tests on banks 
provider") {
                     if (!hasClientKeys) {
                         step("Test INI order")
                         ask("Got to 
https://isotest.postfinance.ch/corporates/user/settings/ebics and click on 
'Reset EBICS user'.\nPress Enter when done>")
-                        nexusCmd.test("ebics-setup -c $conf")
+                        nexusCmd.test("ebics-setup $flags")
                             .assertErr("ebics-setup should failed the first 
time")
                     }
         
                     if (!hasBankKeys) {
                         step("Test HIA order")
                         ask("Got to 
https://isotest.postfinance.ch/corporates/user/settings/ebics and click on 
'Activate EBICS user'.\nPress Enter when done>")
-                        nexusCmd.test("ebics-setup --auto-accept-keys -c 
$conf")
+                        nexusCmd.test("ebics-setup --auto-accept-keys $flags")
                             .assertOk("ebics-setup should succeed the second 
time")
                     }
                    
                     val payto = 
"payto://iban/CH2989144971918294289?receiver-name=Test"
         
                     step("Test fetch transactions")
-                    nexusCmd.test("ebics-fetch --transient -c $conf 
--pinned-start 2022-01-01").assertOk()
+                    nexusCmd.test("ebics-fetch --transient $flags 
--pinned-start 2022-01-01").assertOk()
 
                     while (true) {
                         when (ask("Run 'fetch', 'submit', 'tx', 'txs', 'logs', 
'ack' or 'exit'>")) {
                             "fetch" -> {
                                 step("Fetch new transactions")
-                                nexusCmd.test("ebics-fetch --transient -c 
$conf").assertOk()
+                                nexusCmd.test("ebics-fetch --transient 
$flags").assertOk()
                             }
                             "tx" -> {
                                 step("Test submit one transaction")
@@ -137,7 +139,7 @@ class Cli : CliktCommand("Run integration tests on banks 
provider") {
                                     initiationTime = Instant.now(),
                                     requestUid = 
Base32Crockford.encode(randBytes(16))
                                 ))
-                                nexusCmd.test("ebics-submit --transient -c 
$conf").assertOk()
+                                nexusCmd.test("ebics-submit --transient 
$flags").assertOk()
                             }
                             "txs" -> {
                                 step("Test submit many transaction")
@@ -150,19 +152,19 @@ class Cli : CliktCommand("Run integration tests on banks 
provider") {
                                         requestUid = 
Base32Crockford.encode(randBytes(16))
                                     ))
                                 }
-                                nexusCmd.test("ebics-submit --transient -c 
$conf").assertOk()
+                                nexusCmd.test("ebics-submit --transient 
$flags").assertOk()
                             }
                             "submit" -> {
                                 step("Submit pending transactions")
-                                nexusCmd.test("ebics-submit --transient -c 
$conf").assertOk()
+                                nexusCmd.test("ebics-submit --transient 
$flags").assertOk()
                             }
                             "logs" -> {
                                 step("Fetch logs")
-                                nexusCmd.test("ebics-fetch --transient -c 
$conf --only-logs").assertOk()
+                                nexusCmd.test("ebics-fetch --transient $flags 
--only-logs").assertOk()
                             }
                             "ack" -> {
                                 step("Fetch ack")
-                                nexusCmd.test("ebics-fetch --transient -c 
$conf --only-ack").assertOk()
+                                nexusCmd.test("ebics-fetch --transient $flags 
--only-ack").assertOk()
                             }
                             "exit" -> break
                         }
@@ -174,11 +176,11 @@ class Cli : CliktCommand("Run integration tests on banks 
provider") {
                         
                     if (!hasBankKeys) {
                         step("Test HIA order")
-                        nexusCmd.test("ebics-setup --auto-accept-keys -c 
$conf").assertOk("ebics-setup should succeed the second time")
+                        nexusCmd.test("ebics-setup --auto-accept-keys 
$flags").assertOk("ebics-setup should succeed the second time")
                     }
     
                     step("Test fetch transactions")
-                    nexusCmd.test("ebics-fetch --transient -c $conf 
--pinned-start 2022-01-01").assertOk()
+                    nexusCmd.test("ebics-fetch --transient $flags 
--pinned-start 2022-01-01").assertOk()
 
                     while (true) {
                         when (ask("Run 'fetch', 'submit', 'logs', 'ack' or 
'exit'>")) {
@@ -200,15 +202,15 @@ class Cli : CliktCommand("Run integration tests on banks 
provider") {
                                     initiationTime = Instant.now(),
                                     requestUid = 
Base32Crockford.encode(randBytes(16))
                                 ))
-                                nexusCmd.test("ebics-submit --transient -c 
$conf").assertOk()
+                                nexusCmd.test("ebics-submit --transient 
$flags").assertOk()
                             }
                             "logs" -> {
                                 step("Fetch logs")
-                                nexusCmd.test("ebics-fetch --transient -c 
$conf --only-logs").assertOk()
+                                nexusCmd.test("ebics-fetch --transient $flags 
--only-logs").assertOk()
                             }
                             "ack" -> {
                                 step("Fetch ack")
-                                nexusCmd.test("ebics-fetch --transient -c 
$conf --only-ack").assertOk()
+                                nexusCmd.test("ebics-fetch --transient $flags 
--only-ack").assertOk()
                             }
                             "exit" -> break
                         }
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Database.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/Database.kt
index b0bda010..430d5d83 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Database.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Database.kt
@@ -1,3 +1,21 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
 package tech.libeufin.nexus
 
 import kotlinx.coroutines.Dispatchers
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/DbInit.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/DbInit.kt
index 906943df..95b532b3 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/DbInit.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/DbInit.kt
@@ -1,3 +1,21 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
 package tech.libeufin.nexus
 
 import com.github.ajalt.clikt.core.CliktCommand
@@ -17,7 +35,7 @@ class DbInit : CliktCommand("Initialize the libeufin-nexus 
database", name = "db
         help = "Reset database (DANGEROUS: All existing data is lost)"
     ).flag()
 
-    override fun run() {
+    override fun run() = cliCmd(logger, common.log) {
         val cfg = loadConfig(common.config).dbConfig()
         pgDataSource(cfg.dbConnStr).pgConnection().use { conn ->
             if (requestReset) {
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt
index 05952d21..cfebfb1e 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt
@@ -1,3 +1,21 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
 package tech.libeufin.nexus
 
 import com.github.ajalt.clikt.core.CliktCommand
@@ -340,7 +358,7 @@ fun firstLessThanSecond(
 }
 
 private fun ingestDocument(
-    db: Database?,
+    db: Database,
     currency: String,
     content: ByteArray,
     whichDocument: SupportedDocument
@@ -355,7 +373,7 @@ private fun ingestDocument(
                     content.unzipForEach { fileName, xmlContent ->
                         if (!fileName.contains("camt.054", ignoreCase = true))
                             throw Exception("Asked for notification but did 
NOT get a camt.054")
-                        logger.debug("parse $fileName")
+                        logger.trace("parse $fileName")
                         parseTxNotif(xmlContent, currency, incomingPayments, 
outgoingPayments)
                     }
                 } catch (e: IOException) {
@@ -364,10 +382,10 @@ private fun ingestDocument(
 
                 runBlocking {
                     incomingPayments.forEach {
-                        if (db != null) ingestIncomingPayment(db, it) else 
logger.debug("$it")
+                        ingestIncomingPayment(db, it)
                     }
                     outgoingPayments.forEach {
-                        if (db != null) ingestOutgoingPayment(db, it) else 
logger.debug("$it")
+                        ingestOutgoingPayment(db, it)
                     }
                 }
             } catch (e: Exception) {
@@ -383,7 +401,7 @@ private fun ingestDocument(
         SupportedDocument.PAIN_002 -> {
             try {
                 content.unzipForEach { fileName, xmlContent ->
-                    logger.debug("parse $fileName")
+                    logger.trace("parse $fileName")
                     val status = 
parseCustomerPaymentStatusReport(xmlContent.toString())
                     logger.debug("$status") // TODO ingest in db
                 }
@@ -455,21 +473,25 @@ class EbicsFetch: CliktCommand("Fetches bank records.  
Defaults to camt.054 noti
     ).flag(default = false)
 
     private val onlyStatements by option(
-        help = "Downloads only camt.053 statements"
+        help = "Downloads only camt.053 statements",
+        hidden = true
     ).flag(default = false)
 
     private val onlyAck by option(
-        help = "Downloads only pain.002 acknowledgements"
+        help = "Downloads only pain.002 acknowledgements",
+        hidden = true
     ).flag(default = false)
 
     private val onlyReports by option(
-        help = "Downloads only camt.052 intraday reports"
+        help = "Downloads only camt.052 intraday reports",
+        hidden = true
     ).flag(default = false)
 
     private val onlyLogs by option(
         help = "Downloads only EBICS activity logs via pain.002," +
                 " only available to --transient mode.  Config needs" +
-                " log directory"
+                " log directory",
+        hidden = true
     ).flag(default = false)
 
     private val pinnedStart by option(
@@ -478,17 +500,9 @@ class EbicsFetch: CliktCommand("Fetches bank records.  
Defaults to camt.054 noti
                 " latest document is always until the current time."
     )
 
-    private val parse by option(
-        help = "Reads one ISO20022 document from STDIN and prints " +
-                "the parsing results.  It does not affect the database."
-    ).flag(default = false)
-
-    private val import by option(
-        help = "Read one ISO20022 document from STDIN and imports its content 
into the database"
-    ).flag(default = false)
-
     private val ebicsExtraLog by option(
-        help = "Logs to STDERR the init phase of an EBICS download request"
+        help = "Logs to STDERR the init phase of an EBICS download request",
+        hidden = true
     ).flag(default = false)
 
     /**
@@ -498,7 +512,7 @@ class EbicsFetch: CliktCommand("Fetches bank records.  
Defaults to camt.054 noti
      * mode when no flags are passed to the invocation.
      * FIXME: reduce code duplication with the submit subcommand.
      */
-    override fun run() = cliCmd(logger) {
+    override fun run() = cliCmd(logger, common.log) {
         val cfg: EbicsSetupConfig = extractEbicsConfig(common.config)
         val dbCfg = cfg.config.dbConfig()
 
@@ -510,13 +524,6 @@ class EbicsFetch: CliktCommand("Fetches bank records.  
Defaults to camt.054 noti
         if (onlyLogs) whichDoc = SupportedDocument.PAIN_002_LOGS
 
         Database(dbCfg.dbConnStr).use { db ->
-            if (parse || import) {
-                logger.debug("Reading from STDIN, running in debug mode.  Not 
involving the database.")
-                val stdin = 
generateSequence(::readLine).joinToString("\n").toByteArray()
-                ingestDocument(if (import) db else null, cfg.currency, stdin, 
whichDoc)
-                return@cliCmd
-            }
-
             val (clientKeys, bankKeys) = expectFullKeys(cfg)
             val ctx = FetchContext(
                 cfg,
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSetup.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSetup.kt
index 40a09d7f..8c2d9c2e 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSetup.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSetup.kt
@@ -270,9 +270,6 @@ private fun makePdf(privs: ClientPrivateKeysFile, cfg: 
EbicsSetupConfig) {
  */
 class EbicsSetup: CliktCommand("Set up the EBICS subscriber") {
     private val common by CommonOption()
-    private val checkFullConfig by option(
-        help = "Checks config values of ALL the subcommands"
-    ).flag(default = false)
     private val forceKeysResubmission by option(
         help = "Resubmits all the keys to the bank"
     ).flag(default = false)
@@ -285,29 +282,8 @@ class EbicsSetup: CliktCommand("Set up the EBICS 
subscriber") {
     /**
      * This function collects the main steps of setting up an EBICS access.
      */
-    override fun run() = cliCmd(logger) {
+    override fun run() = cliCmd(logger, common.log) {
         val cfg = extractEbicsConfig(common.config)
-        if (checkFullConfig) {
-            cfg.config.requireString("nexus-submit", "frequency").apply {
-                if (getFrequencyInSeconds(this) == null)
-                    throw Exception("frequency value of nexus-submit section 
is not valid: $this")
-            }
-            cfg.config.requireString("nexus-fetch", "frequency").apply {
-                if (getFrequencyInSeconds(this) == null)
-                    throw Exception("frequency value of nexus-fetch section is 
not valid: $this")
-            }
-            cfg.config.requirePath("nexus-fetch", "statement_log_directory")
-            cfg.config.requireNumber("nexus-httpd", "port")
-            cfg.config.requirePath("nexus-httpd", "unixpath")
-            cfg.config.requireString("nexus-httpd", "serve")
-            cfg.config.requireString("nexus-httpd-wire-gateway-facade", 
"enabled")
-            cfg.config.requireString("nexus-httpd-wire-gateway-facade", 
"auth_method")
-            cfg.config.requireString("nexus-httpd-wire-gateway-facade", 
"auth_token")
-            cfg.config.requireString("nexus-httpd-revenue-facade", "enabled")
-            cfg.config.requireString("nexus-httpd-revenue-facade", 
"auth_method")
-            cfg.config.requireString("nexus-httpd-revenue-facade", 
"auth_token")
-            return@cliCmd
-        }
         // Config is sane.  Go (maybe) making the private keys.
         val clientKeys = preparePrivateKeys(cfg.clientPrivateKeysFilename)
         val httpClient = HttpClient()
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt
index 1e691099..fb8b9a94 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt
@@ -72,12 +72,7 @@ data class SubmissionContext(
     /**
      * Bank EBICS public keys.
      */
-    val bankPublicKeysFile: BankPublicKeysFile,
-
-    /**
-     * Causes EBICS messages to be logged to STDERR.
-     */
-    val ebicsExtraLog: Boolean = false
+    val bankPublicKeysFile: BankPublicKeysFile
 )
 
 /**
@@ -252,21 +247,14 @@ class EbicsSubmit : CliktCommand("Submits any initiated 
payment found in the dat
         help = "This flag submits what is found in the database and returns, " 
+
                 "ignoring the 'frequency' configuration value"
     ).flag(default = false)
-
-    private val debug by option(
-        help = "Reads the pain.001 document from STDIN and submits it to the 
bank"
-    ).flag(default = false)
-
-    private val ebicsExtraLog by option(
-        help = "Logs init phase of uploaded messages to STDERR.  Only 
available for EBICS 3"
-    ).flag(default = false)
+    
     /**
      * Submits any initiated payment that was not submitted
      * so far and -- according to the configuration -- returns
      * or long-polls (currently not implemented) for new payments.
      * FIXME: reduce code duplication with the fetch subcommand.
      */
-    override fun run() = cliCmd(logger) {
+    override fun run() = cliCmd(logger, common.log) {
         val cfg: EbicsSetupConfig = extractEbicsConfig(common.config)
         val dbCfg = cfg.config.dbConfig()
         val (clientKeys, bankKeys) = expectFullKeys(cfg)
@@ -274,24 +262,8 @@ class EbicsSubmit : CliktCommand("Submits any initiated 
payment found in the dat
             cfg = cfg,
             bankPublicKeysFile = bankKeys,
             clientPrivateKeysFile = clientKeys,
-            httpClient = HttpClient(),
-            ebicsExtraLog = ebicsExtraLog
+            httpClient = HttpClient()
         )
-        if (debug) {
-            logger.info("Running in debug mode, submitting STDIN to the bank")
-            val maybeStdin = generateSequence(::readLine).joinToString("\n")
-            runBlocking {
-                submitPain001(
-                    maybeStdin,
-                    ctx.cfg,
-                    ctx.clientPrivateKeysFile,
-                    ctx.bankPublicKeysFile,
-                    ctx.httpClient,
-                    ctx.ebicsExtraLog
-                )
-            }
-            return@cliCmd
-        }
         Database(dbCfg.dbConnStr).use { db -> 
             val frequency = if (transient) {
                 logger.info("Transient mode: submitting what found and 
returning.")
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022.kt
index 239cdcfa..0617e12a 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Iso20022.kt
@@ -1,3 +1,21 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
 package tech.libeufin.nexus
 
 import tech.libeufin.util.*
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
index 3a535aff..3854879e 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
@@ -51,7 +51,7 @@ import java.security.interfaces.RSAPublicKey
 import java.io.FileNotFoundException
 
 val NEXUS_CONFIG_SOURCE = ConfigSource("libeufin", "libeufin-nexus", 
"libeufin-nexus")
-val logger: Logger = LoggerFactory.getLogger("tech.libeufin.nexus")
+val logger: Logger = LoggerFactory.getLogger("libeufin-nexus")
 val myJson = Json {
     this.serializersModule = SerializersModule {
         contextual(RSAPrivateCrtKey::class) { RSAPrivateCrtKeySerializer }
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt
index e1ef647d..19fe88e6 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2023 Stanisci and Dold.
+ * Copyright (C) 2024 Taler Systems S.A.
 
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -39,7 +39,7 @@ import java.time.ZoneId
 import java.util.*
 import javax.xml.datatype.DatatypeFactory
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.nexus.Ebics2")
+private val logger: Logger = LoggerFactory.getLogger("libeufin-nexus-ebics2")
 
 /**
  * Convenience function to download via EBICS with a
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt
index 192786be..647aca74 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt
@@ -1,3 +1,21 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
 package tech.libeufin.nexus.ebics
 
 import io.ktor.client.*
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt
index b700abb2..c5abcbb5 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2023 Stanisci and Dold.
+ * Copyright (C) 2024 Taler Systems S.A.
 
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -56,8 +56,6 @@ import java.time.format.DateTimeFormatter
 import java.util.*
 import java.util.zip.DeflaterInputStream
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.nexus.EbicsCommon")
-
 /**
  * Available EBICS versions.
  */
@@ -100,7 +98,7 @@ enum class SupportedDocument {
  */
 fun ByteArray.unzipForEach(lambda: (String, String) -> Unit) {
     if (this.isEmpty()) {
-        tech.libeufin.nexus.logger.warn("Empty archive")
+        logger.warn("Empty archive")
         return
     }
     val mem = SeekableInMemoryByteChannel(this)
@@ -163,7 +161,7 @@ suspend fun HttpClient.postToBank(bankUrl: String, msg: 
String): String? {
     }
     catch (e: Exception) {
         // hard error (network issue, invalid URL, ..)
-        tech.libeufin.nexus.logger.error("Could not POST to bank at: $bankUrl, 
detail: ${e.message}")
+        logger.error("Could not POST to bank at: $bankUrl, detail: 
${e.message}")
         return null
     }
     // Bank was found, but the EBICS request wasn't served.
@@ -171,7 +169,7 @@ suspend fun HttpClient.postToBank(bankUrl: String, msg: 
String): String? {
     // _should_ not be related to EBICS.  404 for a wrong URL
     // is one example.
     if (resp.status != HttpStatusCode.OK) {
-        tech.libeufin.nexus.logger.error("Bank was found at $bankUrl, but 
EBICS wasn't served.  Response status: ${resp.status}, body: 
${resp.bodyAsText()}")
+        logger.error("Bank was found at $bankUrl, but EBICS wasn't served.  
Response status: ${resp.status}, body: ${resp.bodyAsText()}")
         return null
     }
     return resp.bodyAsText()
diff --git a/nexus/src/main/resources/logback.xml 
b/nexus/src/main/resources/logback.xml
index b18b437e..342ce4b0 100644
--- a/nexus/src/main/resources/logback.xml
+++ b/nexus/src/main/resources/logback.xml
@@ -1,23 +1,16 @@
-<!-- configuration scan="true" -->
 <configuration>
     <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
-       <target>System.err</target>
+        <target>System.err</target>
         <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - 
%msg%n</pattern>
+            <pattern>%d{dd-MMM-yyyy'T'HH:mm:ss.SSS} %-5level %logger{36} - 
%msg%n</pattern>
         </encoder>
     </appender>
 
-    <logger name="tech.libeufin.nexus" level="ALL"  additivity="false">
-        <appender-ref ref="STDERR" />
-    </logger>
-
-    <logger name="io.netty" level="WARN"/>
-    <logger name="ktor" level="WARN"/>
-    <logger name="Exposed" level="WARN"/>
-    <logger name="tech.libeufin.util" level="DEBUG"/>
+    <logger name="io.netty" level="WARN" />
+    <logger name="ktor" level="WARN" />
+    <logger name="com.zaxxer.hikari" level="OFF" />
 
-    <root level="WARN">
-        <appender-ref ref="STDERR"/>
+    <root level="DEBUG">
+        <appender-ref ref="STDERR" />
     </root>
-
-</configuration>
+</configuration>
\ No newline at end of file
diff --git a/nexus/src/test/kotlin/Common.kt b/nexus/src/test/kotlin/Common.kt
index cbe281d5..5adbf157 100644
--- a/nexus/src/test/kotlin/Common.kt
+++ b/nexus/src/test/kotlin/Common.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 import io.ktor.client.*
 import io.ktor.client.engine.mock.*
 import io.ktor.client.request.*
diff --git a/nexus/src/test/kotlin/ConfigLoading.kt 
b/nexus/src/test/kotlin/ConfigLoading.kt
index 13281799..bd636f6a 100644
--- a/nexus/src/test/kotlin/ConfigLoading.kt
+++ b/nexus/src/test/kotlin/ConfigLoading.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 import org.junit.Test
 import org.junit.jupiter.api.assertThrows
 import tech.libeufin.nexus.EbicsSetupConfig
diff --git a/nexus/src/test/kotlin/DatabaseTest.kt 
b/nexus/src/test/kotlin/DatabaseTest.kt
index a9834133..ed46598f 100644
--- a/nexus/src/test/kotlin/DatabaseTest.kt
+++ b/nexus/src/test/kotlin/DatabaseTest.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 import kotlinx.coroutines.runBlocking
 import org.junit.Test
 import tech.libeufin.nexus.*
@@ -6,7 +25,6 @@ import kotlin.random.Random
 import kotlin.test.*
 import kotlin.test.assertEquals
 
-
 class OutgoingPaymentsTest {
     @Test
     fun register() {
diff --git a/nexus/src/test/kotlin/Ebics.kt b/nexus/src/test/kotlin/Ebics.kt
index 374099d0..44978095 100644
--- a/nexus/src/test/kotlin/Ebics.kt
+++ b/nexus/src/test/kotlin/Ebics.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 import io.ktor.client.*
 import io.ktor.client.engine.mock.*
 import io.ktor.http.*
diff --git a/nexus/src/test/kotlin/Keys.kt b/nexus/src/test/kotlin/Keys.kt
index 37c095fd..189de0db 100644
--- a/nexus/src/test/kotlin/Keys.kt
+++ b/nexus/src/test/kotlin/Keys.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 import org.junit.Test
 import tech.libeufin.nexus.*
 import tech.libeufin.util.CryptoUtil
diff --git a/nexus/src/test/kotlin/MySerializers.kt 
b/nexus/src/test/kotlin/MySerializers.kt
index 75dfb46f..0076dd55 100644
--- a/nexus/src/test/kotlin/MySerializers.kt
+++ b/nexus/src/test/kotlin/MySerializers.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 import kotlinx.serialization.encodeToString
 import kotlinx.serialization.json.Json
 import kotlinx.serialization.modules.SerializersModule
diff --git a/nexus/src/test/kotlin/Parsing.kt b/nexus/src/test/kotlin/Parsing.kt
index 4d833d1e..4196f3cc 100644
--- a/nexus/src/test/kotlin/Parsing.kt
+++ b/nexus/src/test/kotlin/Parsing.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 import org.junit.Test
 import org.junit.jupiter.api.assertThrows
 import tech.libeufin.nexus.*
diff --git a/util/src/main/kotlin/Cli.kt b/util/src/main/kotlin/Cli.kt
index 93a15a21..0c1803f5 100644
--- a/util/src/main/kotlin/Cli.kt
+++ b/util/src/main/kotlin/Cli.kt
@@ -29,10 +29,15 @@ import com.github.ajalt.clikt.parameters.options.*
 import com.github.ajalt.clikt.parameters.groups.*
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
+import org.slf4j.event.Level
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.util.ConfigCli")
+private val logger: Logger = LoggerFactory.getLogger("libeufin-config")
 
-fun cliCmd(logger: Logger, lambda: () -> Unit) {
+fun cliCmd(logger: Logger, level: Level, lambda: () -> Unit) {
+    // Set root log level
+    val root = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME) as 
ch.qos.logback.classic.Logger
+    root.setLevel(ch.qos.logback.classic.Level.convertAnSLF4JLevel(level));
+    // Run cli command catching all errors
     try {
         lambda()
     } catch (e: Throwable) {
@@ -44,6 +49,7 @@ fun cliCmd(logger: Logger, lambda: () -> Unit) {
             cause = cause.cause
         }
         logger.error(msg.toString())
+        logger.debug("$e", e)
         throw ProgramResult(1)
     }
 }
@@ -63,6 +69,10 @@ class CommonOption: OptionGroup() {
         canBeDir = false, 
         mustBeReadable = true,
     ).convert { it.toString() } // TODO take path to load config
+    val log by option(
+        "--log", "-L",
+        help = "Configure logging to use LOGLEVEL"
+    ).enum<Level>().default(Level.INFO)
 }
 
 class CliConfigCmd(configSource: ConfigSource) : CliktCommand("Inspect or 
change the configuration", name = "config") {
@@ -83,7 +93,7 @@ private class CliConfigGet(private val configSource: 
ConfigSource) : CliktComman
     private val optionName by argument()
 
 
-    override fun run() = cliCmd(logger) {
+    override fun run() = cliCmd(logger, common.log) {
         val config = talerConfig(configSource, common.config)
         if (isPath) {
             val res = config.lookupPath(sectionName, optionName)
@@ -107,7 +117,7 @@ private class CliConfigPathsub(private val configSource: 
ConfigSource) : CliktCo
     private val common by CommonOption()
     private val pathExpr by argument()
 
-    override fun run() = cliCmd(logger) {
+    override fun run() = cliCmd(logger, common.log) {
         val config = talerConfig(configSource, common.config)
         println(config.pathsub(pathExpr))
     }
@@ -116,7 +126,7 @@ private class CliConfigPathsub(private val configSource: 
ConfigSource) : CliktCo
 private class CliConfigDump(private val configSource: ConfigSource) : 
CliktCommand("Dump the configuration", name = "dump") {
     private val common by CommonOption()
 
-    override fun run() = cliCmd(logger) {
+    override fun run() = cliCmd(logger, common.log) {
         val config = talerConfig(configSource, common.config)
         println("# install path: ${config.getInstallPath()}")
         println(config.stringify())
diff --git a/util/src/main/kotlin/Config.kt b/util/src/main/kotlin/Config.kt
index 065dc96f..124a9db8 100644
--- a/util/src/main/kotlin/Config.kt
+++ b/util/src/main/kotlin/Config.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 package tech.libeufin.util
 
 import ch.qos.logback.core.util.Loader
diff --git a/util/src/main/kotlin/CryptoUtil.kt 
b/util/src/main/kotlin/CryptoUtil.kt
index a9699446..923e84da 100644
--- a/util/src/main/kotlin/CryptoUtil.kt
+++ b/util/src/main/kotlin/CryptoUtil.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2019 Stanisci and Dold.
+ * Copyright (C) 2024 Taler Systems S.A.
 
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
diff --git a/util/src/main/kotlin/DB.kt b/util/src/main/kotlin/DB.kt
index 0fa26c9a..facff98b 100644
--- a/util/src/main/kotlin/DB.kt
+++ b/util/src/main/kotlin/DB.kt
@@ -32,7 +32,7 @@ import java.sql.SQLException
 
 fun getCurrentUser(): String = System.getProperty("user.name")
 
-private val logger: Logger = LoggerFactory.getLogger("tech.libeufin.util.DB")
+private val logger: Logger = LoggerFactory.getLogger("libeufin-db")
 
 // Check GANA (https://docs.gnunet.org/gana/index.html) for numbers allowance.
 
diff --git a/util/src/main/kotlin/Ebics.kt b/util/src/main/kotlin/Ebics.kt
index 8ff9b65a..b0b45197 100644
--- a/util/src/main/kotlin/Ebics.kt
+++ b/util/src/main/kotlin/Ebics.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2019 Stanisci and Dold.
+ * Copyright (C) 2024 Taler Systems S.A.
 
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
diff --git a/util/src/main/kotlin/EbicsOrderUtil.kt 
b/util/src/main/kotlin/EbicsOrderUtil.kt
index fd01ff7f..a7090295 100644
--- a/util/src/main/kotlin/EbicsOrderUtil.kt
+++ b/util/src/main/kotlin/EbicsOrderUtil.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2019 Stanisci and Dold.
+ * Copyright (C) 2024 Taler Systems S.A.
 
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
diff --git a/util/src/main/kotlin/Encoding.kt b/util/src/main/kotlin/Encoding.kt
index 26a523f6..dc76ffeb 100644
--- a/util/src/main/kotlin/Encoding.kt
+++ b/util/src/main/kotlin/Encoding.kt
@@ -1,17 +1,20 @@
 /*
- * This file is part of GNU Taler
- * (C) 2020 Taler Systems S.A.
- *
- * GNU Taler is free software; you can redistribute it and/or modify it under 
the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 3, or (at your option) any later version.
- *
- * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
- * A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
  */
 
 package net.taler.wallet.crypto
diff --git a/util/src/main/kotlin/HTTP.kt b/util/src/main/kotlin/HTTP.kt
index cedd07b6..5b194283 100644
--- a/util/src/main/kotlin/HTTP.kt
+++ b/util/src/main/kotlin/HTTP.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 package tech.libeufin.util
 
 import io.ktor.http.*
@@ -7,7 +26,7 @@ import io.ktor.server.util.*
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 
-private val logger: Logger = LoggerFactory.getLogger("tech.libeufin.util.HTTP")
+private val logger: Logger = LoggerFactory.getLogger("libeufin-common")
 
 // Get the base URL of a request, returns null if any problem occurs.
 fun ApplicationRequest.getBaseUrl(): String? {
diff --git a/util/src/main/kotlin/IbanPayto.kt 
b/util/src/main/kotlin/IbanPayto.kt
index 8920aed9..b1712258 100644
--- a/util/src/main/kotlin/IbanPayto.kt
+++ b/util/src/main/kotlin/IbanPayto.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 package tech.libeufin.util
 
 import org.slf4j.Logger
@@ -5,7 +24,7 @@ import org.slf4j.LoggerFactory
 import java.net.URI
 import java.net.URLDecoder
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.util.IbanPayto")
+private val logger: Logger = LoggerFactory.getLogger("libeufin-common")
 
 // Payto information.
 data class IbanPayto(
diff --git a/util/src/main/kotlin/TalerConfig.kt 
b/util/src/main/kotlin/TalerConfig.kt
index acbdefc7..b9435d19 100644
--- a/util/src/main/kotlin/TalerConfig.kt
+++ b/util/src/main/kotlin/TalerConfig.kt
@@ -25,7 +25,7 @@ import kotlin.io.path.Path
 import kotlin.io.path.isReadable
 import kotlin.io.path.listDirectoryEntries
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.util.TalerConfig")
+private val logger: Logger = LoggerFactory.getLogger("libeufin-config")
 
 private data class Section(
     val entries: MutableMap<String, String>,
diff --git a/util/src/main/kotlin/XMLUtil.kt b/util/src/main/kotlin/XMLUtil.kt
index 67ab77dc..c0fe0638 100644
--- a/util/src/main/kotlin/XMLUtil.kt
+++ b/util/src/main/kotlin/XMLUtil.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2019 Stanisci and Dold.
+ * Copyright (C) 2024 Taler Systems S.A.
 
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -62,7 +62,7 @@ import javax.xml.xpath.XPath
 import javax.xml.xpath.XPathConstants
 import javax.xml.xpath.XPathFactory
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.util.XMLUtil")
+private val logger: Logger = LoggerFactory.getLogger("libeufin-xml")
 
 class DefaultNamespaces : NamespacePrefixMapper() {
     override fun getPreferredPrefix(namespaceUri: String?, suggestion: 
String?, requirePrefix: Boolean): String? {
diff --git a/util/src/main/kotlin/iban.kt b/util/src/main/kotlin/iban.kt
index b1ce37d1..00c635ac 100644
--- a/util/src/main/kotlin/iban.kt
+++ b/util/src/main/kotlin/iban.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 package tech.libeufin.util
 
 fun getIban(): String {
diff --git a/util/src/main/kotlin/strings.kt b/util/src/main/kotlin/strings.kt
index 1d7b49a4..43639cd5 100644
--- a/util/src/main/kotlin/strings.kt
+++ b/util/src/main/kotlin/strings.kt
@@ -1,17 +1,17 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2020 Taler Systems S.A.
- *
+ * Copyright (C) 2024 Taler Systems S.A.
+
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
  * published by the Free Software Foundation; either version 3, or
  * (at your option) any later version.
- *
+
  * LibEuFin is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
  * Public License for more details.
- *
+
  * You should have received a copy of the GNU Affero General Public
  * License along with LibEuFin; see the file COPYING.  If not, see
  * <http://www.gnu.org/licenses/>
diff --git a/util/src/main/kotlin/time.kt b/util/src/main/kotlin/time.kt
index 25f5265f..d1ed8b21 100644
--- a/util/src/main/kotlin/time.kt
+++ b/util/src/main/kotlin/time.kt
@@ -1,17 +1,17 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2020 Taler Systems S.A.
- *
+ * Copyright (C) 2024 Taler Systems S.A.
+
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
  * published by the Free Software Foundation; either version 3, or
  * (at your option) any later version.
- *
+
  * LibEuFin is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
  * Public License for more details.
- *
+
  * You should have received a copy of the GNU Affero General Public
  * License along with LibEuFin; see the file COPYING.  If not, see
  * <http://www.gnu.org/licenses/>
@@ -25,7 +25,7 @@ import java.time.*
 import java.time.format.DateTimeFormatter
 import java.time.temporal.ChronoUnit
 
-private val logger: Logger = LoggerFactory.getLogger("tech.libeufin.util.time")
+private val logger: Logger = LoggerFactory.getLogger("libeufin-common")
 
 /**
  * Converts the 'this' Instant to the number of nanoseconds
diff --git a/util/src/test/kotlin/CryptoUtilTest.kt 
b/util/src/test/kotlin/CryptoUtilTest.kt
index 82448c45..d29a9fa9 100644
--- a/util/src/test/kotlin/CryptoUtilTest.kt
+++ b/util/src/test/kotlin/CryptoUtilTest.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2019 Stanisci and Dold.
+ * Copyright (C) 2024 Taler Systems S.A.
 
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
diff --git a/util/src/test/kotlin/EbicsMessagesTest.kt 
b/util/src/test/kotlin/EbicsMessagesTest.kt
index 4c0032c8..c426d8fb 100644
--- a/util/src/test/kotlin/EbicsMessagesTest.kt
+++ b/util/src/test/kotlin/EbicsMessagesTest.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 package tech.libeufin.sandbox
 
 import junit.framework.TestCase.assertEquals
diff --git a/util/src/test/kotlin/EbicsOrderUtilTest.kt 
b/util/src/test/kotlin/EbicsOrderUtilTest.kt
index 3e0899f6..4a772ab5 100644
--- a/util/src/test/kotlin/EbicsOrderUtilTest.kt
+++ b/util/src/test/kotlin/EbicsOrderUtilTest.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 import org.junit.Test
 import tech.libeufin.util.EbicsOrderUtil
 import tech.libeufin.util.XMLUtil
diff --git a/util/src/test/kotlin/PaytoTest.kt 
b/util/src/test/kotlin/PaytoTest.kt
index 18fcb41b..ff075b58 100644
--- a/util/src/test/kotlin/PaytoTest.kt
+++ b/util/src/test/kotlin/PaytoTest.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 import org.junit.Test
 import tech.libeufin.util.IbanPayto
 import tech.libeufin.util.parsePayto
diff --git a/util/src/test/kotlin/SignatureDataTest.kt 
b/util/src/test/kotlin/SignatureDataTest.kt
index 2c4669d6..936ea91b 100644
--- a/util/src/test/kotlin/SignatureDataTest.kt
+++ b/util/src/test/kotlin/SignatureDataTest.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 import org.apache.xml.security.binding.xmldsig.SignatureType
 import org.junit.Test
 import tech.libeufin.util.CryptoUtil
diff --git a/util/src/test/kotlin/TimeTest.kt b/util/src/test/kotlin/TimeTest.kt
index 37dc3a24..284e46d4 100644
--- a/util/src/test/kotlin/TimeTest.kt
+++ b/util/src/test/kotlin/TimeTest.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 import org.junit.Test
 import tech.libeufin.util.maxTimestamp
 import tech.libeufin.util.minTimestamp
diff --git a/util/src/test/kotlin/XmlCombinatorsTest.kt 
b/util/src/test/kotlin/XmlCombinatorsTest.kt
index a5706ec7..4ecaa622 100644
--- a/util/src/test/kotlin/XmlCombinatorsTest.kt
+++ b/util/src/test/kotlin/XmlCombinatorsTest.kt
@@ -1,6 +1,6 @@
 /*
  * This file is part of LibEuFin.
- * Copyright (C) 2019 Stanisci and Dold.
+ * Copyright (C) 2024 Taler Systems S.A.
 
  * LibEuFin is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
diff --git a/util/src/test/kotlin/XmlUtilTest.kt 
b/util/src/test/kotlin/XmlUtilTest.kt
index 32b91a23..e059c78e 100644
--- a/util/src/test/kotlin/XmlUtilTest.kt
+++ b/util/src/test/kotlin/XmlUtilTest.kt
@@ -1,3 +1,22 @@
+/*
+ * This file is part of LibEuFin.
+ * Copyright (C) 2024 Taler Systems S.A.
+
+ * LibEuFin is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3, or
+ * (at your option) any later version.
+
+ * LibEuFin is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
+ * Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public
+ * License along with LibEuFin; see the file COPYING.  If not, see
+ * <http://www.gnu.org/licenses/>
+ */
+
 import org.apache.xml.security.binding.xmldsig.SignatureType
 import org.junit.Test
 import org.junit.Assert.*
@@ -14,9 +33,6 @@ import java.util.*
 import javax.xml.transform.stream.StreamSource
 import tech.libeufin.util.XMLUtil.Companion.signEbicsResponse
 
-private val logger: Logger = 
LoggerFactory.getLogger("tech.libeufin.util.XmlUnitTest")
-
-
 class XmlUtilTest {
 
     @Test
@@ -68,7 +84,7 @@ class XmlUtilTest {
             </HTDResponseOrderData>""".trimIndent()
         )
 
-        logger.debug(tmp.value.partnerInfo.orderInfoList[0].description)
+        println(tmp.value.partnerInfo.orderInfoList[0].description)
     }
 
     @Test
@@ -77,7 +93,7 @@ class XmlUtilTest {
             
XMLUtil.convertStringToJaxb<EbicsKeyManagementResponse>("<malformed xml>")
         } catch (e: javax.xml.bind.UnmarshalException) {
             // just ensuring this is the exception
-            logger.info("caught")
+            println("caught")
             return
         }
         assertTrue(false)
diff --git a/util/src/test/resources/logback.xml 
b/util/src/test/resources/logback.xml
deleted file mode 100644
index 4e7740ac..00000000
--- a/util/src/test/resources/logback.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<configuration>
-    <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
-        <target>System.err</target>
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - 
%msg%n</pattern>
-        </encoder>
-    </appender>
-
-    <logger name="tech.libeufin.util" level="DEBUG"  additivity="false">
-        <appender-ref ref="STDERR" />
-    </logger>
-
-    <logger name="io.netty" level="WARN" />
-    <logger name="ktor" level="WARN" />
-    <logger name="Exposed" level="WARN" />
-
-    <root level="WARN">
-        <appender-ref ref="STDERR" />
-    </root>
-
-</configuration>
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]