001/*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *   http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied.  See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 */
019package org.apache.maven.enforcer.rule.api;
020
021import java.util.function.Supplier;
022
023/**
024 * Logger used by enforcer rule.
025 *
026 * @author Slawomir Jaranowski
027 * @since 3.2.1
028 */
029public interface EnforcerLogger {
030
031    /**
032     * Log message in {@code warn} or {@code error} level according to current rule {@link EnforcerLevel}.
033     *
034     * @param message a massage to log
035     */
036    void warnOrError(CharSequence message);
037
038    /**
039     * Log message in {@code warn} or {@code error} level according to current rule {@link EnforcerLevel}.
040     * <p>
041     * {@code messageSupplier} will be evaluate only when corresponding log level is enabled.
042     *
043     * @param messageSupplier a supplier for message to log
044     */
045    void warnOrError(Supplier<CharSequence> messageSupplier);
046
047    /**
048     * Is the logger instance enabled for the DEBUG level?
049     *
050     * @return {@code true} if this Logger is enabled for the DEBUG level, {@code false} otherwise.
051     * @since 3.4.0
052     */
053    boolean isDebugEnabled();
054
055    /**
056     * Log message in {@code debug} level.
057     *
058     * @param message a massage to log
059     */
060    void debug(CharSequence message);
061
062    /**
063     * Log message in {@code debug} level.
064     * <p>
065     * {@code messageSupplier} will be evaluate only when corresponding log level is enabled.
066     *
067     * @param messageSupplier a supplier for message to log
068     */
069    void debug(Supplier<CharSequence> messageSupplier);
070
071    /**
072     * Is the logger instance enabled for the INFO level?
073     *
074     * @return {@code true} if this Logger is enabled for the INFO level, {@code false} otherwise.
075     * @since 3.4.0
076     */
077    boolean isInfoEnabled();
078
079    /**
080     * Log message in {@code info} level.
081     *
082     * @param message a massage to log
083     */
084    void info(CharSequence message);
085
086    /**
087     * Log message in {@code info} level.
088     * <p>
089     * {@code messageSupplier} will be evaluate only when corresponding log level is enabled.
090     *
091     * @param messageSupplier a supplier for message to log
092     */
093    void info(Supplier<CharSequence> messageSupplier);
094
095    /**
096     * Is the logger instance enabled for the WARN level?
097     *
098     * @return {@code true} if this Logger is enabled for the WARN level, {@code false} otherwise.
099     * @since 3.4.0
100     */
101    boolean isWarnEnabled();
102
103    /**
104     * Log message in {@code warn} level.
105     *
106     * @param message a massage to log
107     */
108    void warn(CharSequence message);
109
110    /**
111     * Log message in {@code warn} level.
112     * <p>
113     * {@code messageSupplier} will be evaluate only when corresponding log level is enabled.
114     *
115     * @param messageSupplier a supplier for message to log
116     */
117    void warn(Supplier<CharSequence> messageSupplier);
118
119    /**
120     * Is the logger instance enabled for the ERROR level?
121     *
122     * @return {@code true} if this Logger is enabled for the ERROR level, {@code false} otherwise.
123     * @since 3.4.0
124     */
125    boolean isErrorEnabled();
126
127    /**
128     * Log message in {@code error} level.
129     *
130     * @param message a massage to log
131     */
132    void error(CharSequence message);
133
134    /**
135     * Log message in {@code error} level.
136     * <p>
137     * {@code messageSupplier} will be evaluate only when corresponding log level is enabled.
138     *
139     * @param messageSupplier a supplier for message to log
140     */
141    void error(Supplier<CharSequence> messageSupplier);
142}