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.0
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     * Log message in {@code debug} level.
049     *
050     * @param message a massage to log
051     */
052    void debug(CharSequence message);
053
054    /**
055     * Log message in {@code debug} level.
056     * <p>
057     * {@code messageSupplier} will be evaluate only when corresponding log level is enabled.
058     *
059     * @param messageSupplier a supplier for message to log
060     */
061    void debug(Supplier<CharSequence> messageSupplier);
062
063    /**
064     * Log message in {@code info} level.
065     *
066     * @param message a massage to log
067     */
068    void info(CharSequence message);
069
070    /**
071     * Log message in {@code info} level.
072     * <p>
073     * {@code messageSupplier} will be evaluate only when corresponding log level is enabled.
074     *
075     * @param messageSupplier a supplier for message to log
076     */
077    void info(Supplier<CharSequence> messageSupplier);
078
079    /**
080     * Log message in {@code warn} level.
081     *
082     * @param message a massage to log
083     */
084    void warn(CharSequence message);
085
086    /**
087     * Log message in {@code warn} 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 warn(Supplier<CharSequence> messageSupplier);
094
095    /**
096     * Log message in {@code error} level.
097     *
098     * @param message a massage to log
099     */
100    void error(CharSequence message);
101
102    /**
103     * Log message in {@code error} level.
104     * <p>
105     * {@code messageSupplier} will be evaluate only when corresponding log level is enabled.
106     *
107     * @param messageSupplier a supplier for message to log
108     */
109    void error(Supplier<CharSequence> messageSupplier);
110}