1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 package org.apache.maven.api.cli; 20 21 import org.apache.maven.api.annotations.Experimental; 22 import org.apache.maven.api.annotations.Nonnull; 23 import org.apache.maven.api.annotations.Nullable; 24 25 /** 26 * Defines a simple logging interface for Maven CLI operations. 27 * This interface provides methods for logging messages at different severity levels 28 * and supports logging with or without associated exceptions. 29 * 30 * @since 4.0.0 31 */ 32 @Experimental 33 public interface Logger { 34 35 /** 36 * Represents the severity levels for log messages. 37 */ 38 enum Level { 39 DEBUG, 40 INFO, 41 WARN, 42 ERROR 43 } 44 45 /** 46 * Logs a message at the specified level without an associated exception. 47 * 48 * @param level the severity level of the message 49 * @param message the message to be logged 50 */ 51 default void log(@Nonnull Level level, @Nonnull String message) { 52 log(level, message, null); 53 } 54 55 /** 56 * Logs a message at the specified level with an associated exception. 57 * 58 * @param level the severity level of the message 59 * @param message the message to be logged 60 * @param error the associated exception, or null if not applicable 61 */ 62 void log(@Nonnull Level level, @Nonnull String message, @Nullable Throwable error); 63 64 /** 65 * Logs a debug message without an associated exception. 66 * 67 * @param message the debug message to be logged 68 */ 69 default void debug(String message) { 70 log(Level.DEBUG, message); 71 } 72 73 /** 74 * Logs a debug message with an associated exception. 75 * 76 * @param message the debug message to be logged 77 * @param error the associated exception 78 */ 79 default void debug(@Nonnull String message, @Nullable Throwable error) { 80 log(Level.DEBUG, message, error); 81 } 82 83 /** 84 * Logs an info message without an associated exception. 85 * 86 * @param message the info message to be logged 87 */ 88 default void info(@Nonnull String message) { 89 log(Level.INFO, message); 90 } 91 92 /** 93 * Logs an info message with an associated exception. 94 * 95 * @param message the info message to be logged 96 * @param error the associated exception 97 */ 98 default void info(@Nonnull String message, @Nullable Throwable error) { 99 log(Level.INFO, message, error); 100 } 101 102 /** 103 * Logs a warning message without an associated exception. 104 * 105 * @param message the warning message to be logged 106 */ 107 default void warn(@Nonnull String message) { 108 log(Level.WARN, message); 109 } 110 111 /** 112 * Logs a warning message with an associated exception. 113 * 114 * @param message the warning message to be logged 115 * @param error the associated exception 116 */ 117 default void warn(@Nonnull String message, @Nullable Throwable error) { 118 log(Level.WARN, message, error); 119 } 120 121 /** 122 * Logs an error message without an associated exception. 123 * 124 * @param message the error message to be logged 125 */ 126 default void error(@Nonnull String message) { 127 log(Level.ERROR, message); 128 } 129 130 /** 131 * Logs an error message with an associated exception. 132 * 133 * @param message the error message to be logged 134 * @param error the associated exception 135 */ 136 default void error(@Nonnull String message, @Nullable Throwable error) { 137 log(Level.ERROR, message, error); 138 } 139 }