1 /*- 2 * #%L 3 * prolobjectlink-jpi 4 * %% 5 * Copyright (C) 2012 - 2019 Prolobjectlink Project 6 * %% 7 * Permission is hereby granted, free of charge, to any person obtaining a copy 8 * of this software and associated documentation files (the "Software"), to deal 9 * in the Software without restriction, including without limitation the rights 10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 * copies of the Software, and to permit persons to whom the Software is 12 * furnished to do so, subject to the following conditions: 13 * 14 * The above copyright notice and this permission notice shall be included in 15 * all copies or substantial portions of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 * THE SOFTWARE. 24 * #L% 25 */ 26 package io.github.prolobjectlink.prolog; 27 28 import java.util.logging.Level; 29 import java.util.logging.Logger; 30 31 /** 32 * Logger platform interface to log message at any level. Is an adapter for 33 * {@link Logger} adapting the Java logger mechanism for use with the most 34 * popular logger methods. This logger mechanism is accessible from 35 * {@link PrologProvider#getLogger()} or {@link PrologEngine#getLogger()} This 36 * logger interface have all traditional methods used to log messages at 37 * different levels (trace, debug, info,warn,error). 38 * 39 * The levels used for this logger interface are {@link Level} constants present 40 * in the table. 41 * 42 * <table BORDER > <caption>Level table</caption> 43 * <tr> 44 * <td ALIGN=CENTER><b>Method</b></td> 45 * <td ALIGN=CENTER><b>Level</b></td> 46 * </tr> 47 * <tr> 48 * <td>{@link #trace(Object, Object, Throwable)}</td> 49 * <td>{@link Level#FINEST}</td> 50 * </tr> 51 * <tr> 52 * <td>{@link #debug(Object, Object, Throwable)}</td> 53 * <td>{@link Level#FINE}</td> 54 * </tr> 55 * <tr> 56 * <td>{@link #info(Object, Object, Throwable)}</td> 57 * <td>{@link Level#INFO}</td> 58 * </tr> 59 * <tr> 60 * <td>{@link #warn(Object, Object, Throwable)}</td> 61 * <td>{@link Level#WARNING}</td> 62 * </tr> 63 * <tr> 64 * <td>{@link #error(Object, Object, Throwable)}</td> 65 * <td>{@link Level#SEVERE}</td> 66 * </tr> 67 * </table> 68 * 69 * By default the platform implement a logger mechanism for drop log messages in 70 * Operating System temporal directory into files named 71 * prolobjectlink-YYYY.MM.DD. 72 * 73 * In {@link AbstractLogger} class there are many implementations for this 74 * interface. Every final implementation class can extends from 75 * {@link AbstractLogger}. 76 * 77 * @author Jose Zalacain 78 * @since 1.0 79 */ 80 public interface PrologLogger { 81 82 public static final String RUNTIME_ERROR = "Runtime error "; 83 84 public static final String FILE_NOT_FOUND = "File not found "; 85 86 public static final String CLASS_NOT_FOUND = "Class not found "; 87 88 public static final String UNKNOWN_PREDICATE = "Unknow predicate"; 89 90 public static final String SYNTAX_ERROR = "Syntax error in the file "; 91 92 public static final String NON_SOLUTION = "The query no have solution "; 93 94 public static final String INDICATOR_NOT_FOUND = "Predicate not found for"; 95 96 public static final String IO = "Some error occurs opening the file"; 97 98 public static final String ERROR_LOADING_BUILT_INS = "Error loading prolog built-ins "; 99 100 public static final String DONT_WORRY = "Don't worry about it, the file was create for you "; 101 102 public static final String INTERRUPTED_ERROR = "Thread interrupted error"; 103 104 public static final String EXECUTION_ERROR = "Thread execution error"; 105 106 public static final String FILE_NOT_DELETE = "File not delete "; 107 108 public static final String INSTANTIATION = "Instantiation error "; 109 110 public static final String ILLEGAL_ACCESS = "Illegal access error "; 111 112 public static final String NO_SUCH_METHOD = "No such method error"; 113 114 public static final String SECURITY = "Security error "; 115 116 public static final String SQL_ERROR = "SQL error "; 117 118 public static final String UNKNOWN_HOST = "Unknow Host error"; 119 120 public static final String ILLEGAL_ARGUMENT = "Illegal argument error"; 121 122 public static final String INVOCATION_TARGET = "Invocation target error"; 123 124 public static final String NO_SUCH_FIELD = "No such field error"; 125 126 public static final String CLASS_CAST = "Class cast error"; 127 128 public static final String URI = "URI Syntax error"; 129 130 public static final String URL = "URL Syntax error"; 131 132 public static final String LINK = "Link library error"; 133 134 /** 135 * Log a message from a given object sender at the given level. 136 * 137 * @param sender object that invoke the logger service. 138 * @param level log level. 139 * @param message message to be logged. 140 * @since 1.0 141 */ 142 public void log(Object sender, Level level, Object message); 143 144 /** 145 * Log a message from a given object sender at the given level. Append a 146 * {@link Throwable} argument used for log exceptions if is needed. 147 * 148 * @param sender object that invoke the logger service. 149 * @param level log level. 150 * @param message message to be logged. 151 * @param t argument used for log exceptions. 152 * @since 1.0 153 */ 154 public void log(Object sender, Level level, Object message, Throwable t); 155 156 /** 157 * Log a message from a given object sender at {@link Level#FINEST} level. Is a 158 * shortcut to {@code log(sender, Level.FINEST, message);} 159 * 160 * @param sender object that invoke the logger service. 161 * @param message message to be logged. 162 * @since 1.0 163 */ 164 public void trace(Object sender, Object message); 165 166 /** 167 * Log a message from a given object sender at {@link Level#FINEST} level. 168 * Append a {@link Throwable} argument used for log exceptions if is needed. Is 169 * a shortcut to {@code log(sender, Level.FINEST, message, t);} 170 * 171 * @param sender object that invoke the logger service. 172 * @param message message to be logged. 173 * @param t argument used for log exceptions. 174 * @since 1.0 175 */ 176 public void trace(Object sender, Object message, Throwable t); 177 178 /** 179 * Log a message from a given object sender at {@link Level#FINE} level. Is a 180 * shortcut to {@code log(sender, Level.FINE, message);} 181 * 182 * @param sender object that invoke the logger service. 183 * @param message message to be logged. 184 * @since 1.0 185 */ 186 public void debug(Object sender, Object message); 187 188 /** 189 * Log a message from a given object sender at {@link Level#FINE} level. Append 190 * a {@link Throwable} argument used for log exceptions if is needed. Is a 191 * shortcut to {@code log(sender, Level.FINE, message, t);} 192 * 193 * 194 * @param sender object that invoke the logger service. 195 * @param message message to be logged. 196 * @param t argument used for log exceptions. 197 * @since 1.0 198 */ 199 public void debug(Object sender, Object message, Throwable t); 200 201 /** 202 * Log a message from a given object sender at {@link Level#INFO} level. Is a 203 * shortcut to {@code log(sender, Level.INFO, message);} 204 * 205 * @param sender object that invoke the logger service. 206 * @param message message to be logged. 207 * @since 1.0 208 */ 209 public void info(Object sender, Object message); 210 211 /** 212 * Log a message from a given object sender at {@link Level#INFO} level. Append 213 * a {@link Throwable} argument used for log exceptions if is needed. Is a 214 * shortcut to {@code log(sender, Level.INFO, message, t);} 215 * 216 * 217 * @param sender object that invoke the logger service. 218 * @param message message to be logged. 219 * @param t argument used for log exceptions. 220 * @since 1.0 221 */ 222 public void info(Object sender, Object message, Throwable t); 223 224 /** 225 * Log a message from a given object sender at {@link Level#WARNING} level. Is a 226 * shortcut to {@code log(sender, Level.WARNING, message);} 227 * 228 * @param sender object that invoke the logger service. 229 * @param message message to be logged. 230 * @since 1.0 231 */ 232 public void warn(Object sender, Object message); 233 234 /** 235 * Log a message from a given object sender at {@link Level#WARNING} level. 236 * Append a {@link Throwable} argument used for log exceptions if is needed. Is 237 * a shortcut to {@code log(sender, Level.WARNING, message, t);} 238 * 239 * 240 * @param sender object that invoke the logger service. 241 * @param message message to be logged. 242 * @param t argument used for log exceptions. 243 * @since 1.0 244 */ 245 public void warn(Object sender, Object message, Throwable t); 246 247 /** 248 * Log a message from a given object sender at {@link Level#SEVERE} level. Is a 249 * shortcut to {@code log(sender, Level.SEVERE, message);} 250 * 251 * @param sender object that invoke the logger service. 252 * @param message message to be logged. 253 * @since 1.0 254 */ 255 public void error(Object sender, Object message); 256 257 /** 258 * Log a message from a given object sender at {@link Level#SEVERE} level. 259 * Append a {@link Throwable} argument used for log exceptions if is needed. Is 260 * a shortcut to {@code log(sender, Level.SEVERE, message, t);} 261 * 262 * 263 * @param sender object that invoke the logger service. 264 * @param message message to be logged. 265 * @param t argument used for log exceptions. 266 * @since 1.0 267 */ 268 public void error(Object sender, Object message, Throwable t); 269 270 }