I would not agree with the way of using "in-memory global" instead for logging. It would be easier to have one ClassMethod  Log, which would log everything needed to be logged, it can do it with objects, which would have indexes for future usage, to get faster access. But it can temporarily switch off journalling at all, or just suspend the transaction. In any normal application, any logging should already be centralized. So, it would not add any complexity for an application. But in some cases quite difficult to debug some issues, when you lost some logging because they were rollbacked.

Yes, it is, but in this case, it exceeded connections limit for one license unit and it is even just only 4 in comparing with 25 for ordinary versions.

And I think this message in the log should be changed to be more clear. 

Another issue, here

USER> Write $SYSTEM.License.MaxConnections()
25

25 connections for ordinary version, but Community Edition, has only 4 connections and fails to start more.

And another problem is that reaching connections limit for just one user, changes state of the instance as with warn

root@d5eaa844235c:/# iris list

Configuration 'IRIS'   (default)
        directory:    /usr/irissys
        versionid:    2019.2.0.107.0com
        datadir:      /dur/config
        conf file:    iris.cpf  (SuperServer port = 51773, WebServer = 52773)
        status:       running, since Tue Jun 25 13:00:11 2019
        state:        warn
        product:      InterSystems IRIS

And this state used for HEALTHCHECK of the container, so, this container became as Unhealthy, which means in production such container should be killed, even it is actually in good condition.

$ docker-compose ps
        Name                   Command               State     
---------------------------------------------------------------
jdbc-jpa-rest_iris_1   /iris-main             Up (unhealthy)

so, my application.properties

in this case, I have only 4 connections on the server, without any issues with licenses

spring.datasource.driverClassName = com.intersystems.jdbc.IRISDriver
spring.datasource.url = jdbc:IRIS://127.0.0.1:9091/USER
spring.datasource.username = _SYSTEM
spring.datasource.password = 1234
spring.datasource.testOnBorrow = true
spring.datasource.testWhileIdle = true
spring.datasource.timeBetweenEvictionRunsMillis = 60000
spring.datasource.minEvictableIdleTimeMillis = 30000
spring.datasource.validationQuery = SELECT 1
spring.datasource.max-wait = 8000
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.InterSystemsIRISDialect
spring.jpa.hibernate.ddl-auto = create
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false = false
spring.datasource.hikari.maximumPoolSize = 4