Как указать отдельный формат журнала для консоли-журнала Tomcat, используя java.util.logging.SimpleFormatter - PullRequest
5 голосов
/ 22 июня 2019

У меня есть несколько веб-приложений, развернутых на моей установке Tomcat, и я использую swallowOutput="true" в моем context.xml, чтобы получить разные выходные данные для каждого веб-приложения, а не только один большой catalina.out "вместе для всех веб-приложений. Эта работа в порядке. Поэтому я использую файл logging.properties для каждого веб-приложения.

Веб-приложения генерируют вывод журнала, используя базовые System.out.println.

Теперь я хотел бы определить очень простой формат журнала, который будет сгенерирован Tomcat, указав

java.util.logging.SimpleFormatter.format=%5$s %n

Тем не менее, сгенерированные журналы всегда показывают полный формат, который мне не нужен, независимо от того, что / хотя я указываю строку формата выше:

22-Jun-2019 16:08:15.310 INFO [http-nio-80-exec-10] org.apache.catalina.core.StandardWrapperValve.invoke backend Sat Jun 22 16:08:15 CEST 2019: ... output of the servlet's System.out.println-calls ...

Я хотел бы создать небольшой и четко выложенный журнал без жетонов «StandardWrapperValve» и т. Д. В каждой строке. Мой глобальный файл logging.properties имеет следующую форму

# 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.

2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.

3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.

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.

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.SimpleFormatter

java.util.logging.SimpleFormatter.format=%5$s %n

org.apache.juli.SimpleFormatter.format=%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

И свойства ведения журнала для каждого веб-приложения выглядят следующим образом

handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

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

org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = webappX.

java.util.logging.ConsoleHandler.level = FINE

java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%5$s %n
1catalina.java.util.logging.SimpleFormatter.format=%5$s %n
org.apache.juli.SimpleFormatter.format=%5$s %n

Как видите, я уже пробовал разные строки, чтобы установить строку форматирования для разных имен классов, например, * java.util.logggin.SimpleFormatter.format * org.apache.juli.SimpleFormatter.format * 1catalina.java.util.logging.SimpleFormatter.format как я нашел некоторую информацию об этом в других потоках stackoverflow, но ни один из них не показывает никакого эффекта. Формат вывода журнала остается тем же, всегда в полном формате. Строка формата не оказывает никакого влияния.

Спасибо за любые идеи, Томбо

1 Ответ

4 голосов
/ 28 июня 2019

Я протестировал некоторые варианты на Tomcat 8.5.15 и обнаружил, что, по-видимому, также важно установить org.apache.juli.FileHandler.formatter в веб-приложении logging.properties.

Так что это мой полный конечный веб-приложениеlogging.properties:

handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

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

org.apache.juli.FileHandler.level = ALL
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = webappX.
org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter

И в глобальном apache-tomcat/conf/logging.properties исходном тексте я изменил только java.util.logging.ConsoleHandler.formatter и добавил формат:

java.util.logging.ConsoleHandler.level = FINE
#java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%5$s %n

Указанный SimpleFormatter.format действует для файлов журналов webApp, если webApp указывает org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter в пределах каждого веб-приложения logging.properties.Это также эффективно для необработанного вывода консоли.

...