docker-library/tomcat

Custom tomcat:9 image, change time format config in `logging.properties`, not working, what am I missing?

moontide opened this issue · 1 comments

The following code snippet is from my Dockerfile

# The following single line will work for tomcat:7 in docker container
RUN sed -i '/java.util.logging.ConsoleHandler.encoding = UTF-8/a java.util.logging.SimpleFormatter.format = %1$tF %1$tT.%1$tL [%4$s] %2$s: %5$s%n' /usr/local/tomcat/conf/logging.properties

RUN sed -i '/java.util.logging.ConsoleHandler.encoding = UTF-8/a 1catalina.java.util.logging.SimpleFormatter.format = %1$tF %1$tT.%1$tL [%4$s] %2$s: %5$s%n' /usr/local/tomcat/conf/logging.properties
RUN sed -i '/java.util.logging.ConsoleHandler.encoding = UTF-8/a org.apache.juli.OneLineFormatter.timeFormat = yyyy-MM-dd HH:mm:ss.SSS\n1catalina.org.apache.juli.OneLineFormatter.timeFormat = yyyy-MM-dd HH:mm:ss.SSS' /usr/local/tomcat/conf/logging.properties

The resulted content of logging.properties file

Click to show the resulted content of logging.properties file
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8

2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90
2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8

3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.maxDays = 90
3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90
4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8
org.apache.juli.OneLineFormatter.timeFormat = yyyy-MM-dd HH:mm:ss.SSS
1catalina.org.apache.juli.OneLineFormatter.timeFormat = yyyy-MM-dd HH:mm:ss.SSS
1catalina.java.util.logging.SimpleFormatter.format = %1$tF %1$tT.%1$tL [%4$s] %2$s: %5$s%n
java.util.logging.SimpleFormatter.format = %1$tF %1$tT.%1$tL [%4$s] %2$s: %5$s%n


############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler

# For example, set the org.apache.catalina.util.LifecycleBase logger to log
# each component that extends LifecycleBase changing state:
#org.apache.catalina.util.LifecycleBase.level = FINE

# To see debug messages in TldLocationsCache, uncomment the following line:
#org.apache.jasper.compiler.TldLocationsCache.level = FINE

# To see debug messages for HTTP/2 handling, uncomment the following line:
#org.apache.coyote.http2.level = FINE

# To see debug messages for WebSocket handling, uncomment the following line:
#org.apache.tomcat.websocket.level = FINE

Note

  • If I use this logging.properties for Tomcat 9.0.X outside of docker, it works as expected.
  • If I add -D'java.util.logging.SimpleFormatter.format=%1\$tF %1\$tT.%1\$tL [%4\$s] %2\$s: %5\$s%n' to ENV in Dockerfile, then rebuild customized image, it works as expected.

What am I missing?

Sorry, I think this is a case of us being the wrong people to help debug this. 🙈

I would suggest trying a dedicated support forum, such as the Docker Community Forums, the Docker Community Slack, or Stack Overflow. 👍