All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hazelcast.org.apache.calcite.util.trace.CalciteLogger Maven / Gradle / Ivy

There is a newer version: 5.5.0
Show newest version
/*
 * 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.
 */
package com.hazelcast.org.apache.calcite.util.trace;

import com.hazelcast.org.checkerframework.checker.nullness.qual.Nullable;
import com.hazelcast.org.slf4j.Logger;

/**
 * Small extension to {@link Logger} with some performance improvements.
 *
 * 

{@link Logger#info(String format, Object[] params)} is expensive * to call, since the caller must always allocate and fill in the array * params, even when the level will prevent a message * being logged. On the other hand, {@link Logger#info(String msg)} * and {@link Logger#info(String msg, Object o)} do not have this * problem. * *

As a workaround this class provides * {@link #info(String msg, Object o1, Object o2)} etc. (The varargs feature of * java 1.5 half-solves this problem, by automatically wrapping args in an * array, but it does so without testing the level.) * *

Usage: replace: * *

static final Logger tracer = * CalciteTracer.getMyTracer();
* *

by: * *

static final CalciteLogger tracer = * new CalciteLogger(CalciteTrace.getMyTracer());
*/ public class CalciteLogger { //~ Instance fields -------------------------------------------------------- private final Logger logger; // delegate //~ Constructors ----------------------------------------------------------- public CalciteLogger(Logger logger) { assert logger != null; this.logger = logger; } //~ Methods ---------------------------------------------------------------- // WARN /** * Logs a WARN message with two Object parameters. */ public void warn(String format, @Nullable Object arg1, @Nullable Object arg2) { // slf4j already avoids the array creation for 1 or 2 arg invocations logger.warn(format, arg1, arg2); } /** * Conditionally logs a WARN message with three Object parameters. */ public void warn(String format, @Nullable Object arg1, @Nullable Object arg2, @Nullable Object arg3) { if (logger.isWarnEnabled()) { logger.warn(format, arg1, arg2, arg3); } } /** * Conditionally logs a WARN message with four Object parameters. */ public void warn(String format, @Nullable Object arg1, @Nullable Object arg2, @Nullable Object arg3, @Nullable Object arg4) { if (logger.isWarnEnabled()) { logger.warn(format, arg1, arg2, arg3, arg4); } } public void warn(String format, Object... args) { if (logger.isWarnEnabled()) { logger.warn(format, args); } } // INFO /** * Logs an INFO message with two Object parameters. */ public void info(String format, @Nullable Object arg1, @Nullable Object arg2) { // slf4j already avoids the array creation for 1 or 2 arg invocations logger.info(format, arg1, arg2); } /** * Conditionally logs an INFO message with three Object parameters. */ public void info(String format, @Nullable Object arg1, @Nullable Object arg2, @Nullable Object arg3) { if (logger.isInfoEnabled()) { logger.info(format, arg1, arg2, arg3); } } /** * Conditionally logs an INFO message with four Object parameters. */ public void info(String format, @Nullable Object arg1, @Nullable Object arg2, @Nullable Object arg3, @Nullable Object arg4) { if (logger.isInfoEnabled()) { logger.info(format, arg1, arg2, arg3, arg4); } } public void info(String format, Object... args) { if (logger.isInfoEnabled()) { logger.info(format, args); } } // DEBUG /** * Logs a DEBUG message with two Object parameters. */ public void debug(String format, @Nullable Object arg1, @Nullable Object arg2) { // slf4j already avoids the array creation for 1 or 2 arg invocations logger.debug(format, arg1, arg2); } /** * Conditionally logs a DEBUG message with three Object parameters. */ public void debug(String format, @Nullable Object arg1, @Nullable Object arg2, @Nullable Object arg3) { if (logger.isDebugEnabled()) { logger.debug(format, arg1, arg2, arg3); } } /** * Conditionally logs a DEBUG message with four Object parameters. */ public void debug(String format, @Nullable Object arg1, @Nullable Object arg2, @Nullable Object arg3, @Nullable Object arg4) { if (logger.isDebugEnabled()) { logger.debug(format, arg1, arg2, arg3, arg4); } } public void debug(String format, Object... args) { if (logger.isDebugEnabled()) { logger.debug(format, args); } } // TRACE /** * Logs a TRACE message with two Object parameters. */ public void trace(String format, @Nullable Object arg1, @Nullable Object arg2) { // slf4j already avoids the array creation for 1 or 2 arg invocations logger.trace(format, arg1, arg2); } /** * Conditionally logs a TRACE message with three Object parameters. */ public void trace(String format, @Nullable Object arg1, @Nullable Object arg2, @Nullable Object arg3) { if (logger.isTraceEnabled()) { logger.trace(format, arg1, arg2, arg3); } } /** * Conditionally logs a TRACE message with four Object parameters. */ public void trace(String format, @Nullable Object arg1, @Nullable Object arg2, @Nullable Object arg3, @Nullable Object arg4) { if (logger.isTraceEnabled()) { logger.trace(format, arg1, arg2, arg3, arg4); } } public void trace(String format, @Nullable Object... args) { if (logger.isTraceEnabled()) { logger.trace(format, args); } } // We expose and delegate the commonly used part of the Logger interface. // For everything else, just expose the delegate. (Could use reflection.) public Logger getLogger() { return logger; } // Hold-over from the previous j.u.logging implementation public void warn(String msg) { logger.warn(msg); } public void info(String msg) { logger.info(msg); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy