@@ -22,14 +22,16 @@ public class Logger
2222 private File currentLogFile ;
2323 private boolean isDebug ;
2424 private boolean isVerbose ;
25+ private int verboseLevel = 0 ;
2526 private boolean smallLog ;
2627 private boolean consoleExceptions ;
2728
28- static Map <String , LogTemplate > templates = new HashMap <String ,LogTemplate >() {{
29- put (TEMPLATE .VERBOSE .name (), new LogTemplate (LogColor .WHITE , "" , "VER" , false , true , false , false , false , false , "LOG" ));
30- put (TEMPLATE .INFO .name (), new LogTemplate (LogColor .WHITE , "" , "INF" , true , true , true , false , false , false , "LOG" ));
31- put (TEMPLATE .WARNING .name (), new LogTemplate (LogColor .YELLOW , "" , "WRN" , true , false , false , false , false , true , "LOG" ));
32- put (TEMPLATE .ERROR .name (), new LogTemplate (LogColor .RED , "" , "ERR" , true , false , false , false , false , true , "LOG" ));
29+ static Map <String , LogTemplate > templates = new HashMap <>()
30+ {{
31+ put (TEMPLATE .VERBOSE .name (), new LogTemplate (LogColor .WHITE , "" , "VER" , false , true , 0 , false , false , false , false , "LOG" ));
32+ put (TEMPLATE .INFO .name (), new LogTemplate (LogColor .WHITE , "" , "INF" , true , true , 0 , true , false , false , false , "LOG" ));
33+ put (TEMPLATE .WARNING .name (), new LogTemplate (LogColor .YELLOW , "" , "WRN" , true , false , 0 , false , false , false , true , "LOG" ));
34+ put (TEMPLATE .ERROR .name (), new LogTemplate (LogColor .RED , "" , "ERR" , true , false , 0 , false , false , false , true , "LOG" ));
3335 }};
3436
3537 private Logger ()
@@ -83,6 +85,16 @@ public void setVerbose(boolean isVerboseMode)
8385 {
8486 isVerbose = isVerboseMode ;
8587 }
88+ /**
89+ * Change the current verbose-level. This will show messages
90+ * with the selected verbose level or lower.
91+ * @param level How many different verbose levels should be active.
92+ * (Default is 0)
93+ */
94+ public void setVerboseLevel (int level )
95+ {
96+ verboseLevel = level ;
97+ }
8698 /**
8799 * Change the way {@link LogEntry}s are displayed.
88100 * Using small-logs will remove all prefixes from logging.
@@ -117,8 +129,11 @@ public void setConsoleExceptions(boolean showExceptionsInConsole)
117129 public static void log (LogEntry log )
118130 {
119131 String logOutput = createLogString (log );
132+ boolean debugOK = !log .onlyDebug || getInstance ().isDebug ;
133+ boolean verboseOK = !log .onlyVerbose || getInstance ().isVerbose ;
134+ boolean verboseLevelOK = log .verboseLevel <= getInstance ().verboseLevel ;
120135
121- if (( log . onlyDebug && getInstance (). isDebug ) || (log . onlyVerbose && getInstance (). isVerbose ) || (! log . onlyVerbose && ! log . onlyDebug ))
136+ if (debugOK || (verboseOK && verboseLevelOK ))
122137 {
123138 System .out .println (log .color + log .background + logOutput + LogColor .RESET );
124139
@@ -206,118 +221,133 @@ public static boolean log(String text, Enum<?> template)
206221 * @param writeToFile If {@link LogEntry}s written with this {@link LogTemplate} should be saved in a log-file.
207222 * @param onlyDebug If {@link LogEntry}s with these settings should only be visible in debug-mode.
208223 * @param onlyVerbose If {@link LogEntry}s with these settings should only be visible in verbose-mode.
224+ * @param verboseLevel The minimum required level for messages with this {@link LogEntry} to be displayed if they are onlyVerbose.
209225 * @param hidePrefix If only the actual message without timestamp, logging-level and error-code should be shown.
210226 * @param exceptionsInConsole If {@link LogEntry}s whith these settings should print their exceptions in the console.
211227 * @param mixpanelMessage If the {@link LogEntry} should be sent to Mixpanel.
212228 * @param mixpanelName The name of the Mixpanel-event.
213229 * @return True if the {@link LogTemplate} was created successfully, False if the {@link LogTemplate} was overwritten.
214230 */
215- public static boolean createNewTemplate (String templateName , String colorCode , String backgroundColorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug , boolean hidePrefix , boolean exceptionsInConsole , boolean mixpanelMessage , String mixpanelName )
231+ public static boolean createNewTemplate (String templateName , String colorCode , String backgroundColorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , int verboseLevel , boolean onlyDebug , boolean hidePrefix , boolean exceptionsInConsole , boolean mixpanelMessage , String mixpanelName )
216232 {
217233 boolean isNew = !templates .containsKey (templateName );
218- templates .put (templateName , new LogTemplate (colorCode , backgroundColorCode , logLevel , writeToFile , onlyVerbose , onlyDebug , hidePrefix , exceptionsInConsole , mixpanelMessage , mixpanelName ));
234+ templates .put (templateName , new LogTemplate (colorCode , backgroundColorCode , logLevel , writeToFile , onlyVerbose , verboseLevel , onlyDebug , hidePrefix , exceptionsInConsole , mixpanelMessage , mixpanelName ));
219235 return isNew ;
220236 }
221237 /**
222- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
238+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
239+ */
240+ public static boolean createNewTemplate (Enum <?> templateName , String colorCode , String backgroundColorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , int verboseLevel , boolean onlyDebug , boolean hidePrefix , boolean exceptionsInConsole , boolean mixpanelMessage , String mixpanelName )
241+ {
242+ return createNewTemplate (templateName .name (), colorCode , backgroundColorCode , logLevel , writeToFile , onlyVerbose , verboseLevel , onlyDebug , hidePrefix , exceptionsInConsole , mixpanelMessage , mixpanelName );
243+ }
244+ /**
245+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
246+ */
247+ public static boolean createNewTemplate (String templateName , String colorCode , String backgroundColorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug , boolean hidePrefix , boolean exceptionsInConsole , boolean mixpanelMessage , String mixpanelName )
248+ {
249+ return createNewTemplate (templateName , colorCode , backgroundColorCode , logLevel , writeToFile , onlyVerbose , 0 , onlyDebug , hidePrefix , exceptionsInConsole , mixpanelMessage , mixpanelName );
250+ }
251+ /**
252+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
223253 */
224254 public static boolean createNewTemplate (Enum <?> templateName , String colorCode , String backgroundColorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug , boolean hidePrefix , boolean exceptionsInConsole , boolean mixpanelMessage , String mixpanelName )
225255 {
226- return createNewTemplate (templateName . name () , colorCode , backgroundColorCode , logLevel , writeToFile , onlyVerbose , onlyDebug , hidePrefix , exceptionsInConsole , mixpanelMessage , mixpanelName );
256+ return createNewTemplate (templateName , colorCode , backgroundColorCode , logLevel , writeToFile , onlyVerbose , 0 , onlyDebug , hidePrefix , exceptionsInConsole , mixpanelMessage , mixpanelName );
227257 }
228258 /**
229- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
259+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
230260 */
231261 public static boolean createNewTemplate (String templateName , String colorCode , String backgroundColorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug , boolean hidePrefix , boolean mixpanelMessage , String mixpanelName )
232262 {
233263 return createNewTemplate (templateName , colorCode , backgroundColorCode , logLevel , writeToFile , onlyVerbose , onlyDebug , hidePrefix , false , mixpanelMessage , mixpanelName );
234264 }
235265 /**
236- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
266+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
237267 */
238268 public static boolean createNewTemplate (Enum <?> templateName , String colorCode , String backgroundColorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug , boolean hidePrefix , boolean mixpanelMessage , String mixpanelName )
239269 {
240- return createNewTemplate (templateName . name () , colorCode , backgroundColorCode , logLevel , writeToFile , onlyVerbose , onlyDebug , hidePrefix , mixpanelMessage , mixpanelName );
270+ return createNewTemplate (templateName , colorCode , backgroundColorCode , logLevel , writeToFile , onlyVerbose , onlyDebug , hidePrefix , false , mixpanelMessage , mixpanelName );
241271 }
242272 /**
243- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
273+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
244274 */
245275 public static boolean createNewTemplate (String templateName , String colorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug , boolean hidePrefix , boolean mixpanelMessage , String mixpanelName )
246276 {
247277 return createNewTemplate (templateName , colorCode , "" , logLevel , writeToFile , onlyVerbose , onlyDebug , hidePrefix , mixpanelMessage , mixpanelName );
248278 }
249279 /**
250- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
280+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
251281 */
252282 public static boolean createNewTemplate (Enum <?> templateName , String colorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug , boolean hidePrefix , boolean mixpanelMessage , String mixpanelName )
253283 {
254284 return createNewTemplate (templateName , colorCode , "" , logLevel , writeToFile , onlyVerbose , onlyDebug , hidePrefix , mixpanelMessage , mixpanelName );
255285 }
256286 /**
257- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
287+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
258288 */
259289 public static boolean createNewTemplate (String templateName , String colorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug , boolean hidePrefix , boolean mixpanelMessage )
260290 {
261291 return createNewTemplate (templateName , colorCode , logLevel , writeToFile , onlyVerbose , onlyDebug , hidePrefix , mixpanelMessage , "LOG" );
262292 }
263293 /**
264- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
294+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
265295 */
266296 public static boolean createNewTemplate (Enum <?> templateName , String colorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug , boolean hidePrefix , boolean mixpanelMessage )
267297 {
268298 return createNewTemplate (templateName , colorCode , logLevel , writeToFile , onlyVerbose , onlyDebug , hidePrefix , mixpanelMessage , "LOG" );
269299 }
270300 /**
271- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
301+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
272302 */
273303 public static boolean createNewTemplate (String templateName , String colorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug , boolean hidePrefix )
274304 {
275305 return createNewTemplate (templateName , colorCode , logLevel , writeToFile , onlyVerbose , onlyDebug , hidePrefix , false );
276306 }
277307 /**
278- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
308+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
279309 */
280310 public static boolean createNewTemplate (Enum <?> templateName , String colorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug , boolean hidePrefix )
281311 {
282312 return createNewTemplate (templateName , colorCode , logLevel , writeToFile , onlyVerbose , onlyDebug , hidePrefix , false );
283313 }
284314 /**
285- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
315+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
286316 */
287317 public static boolean createNewTemplate (String templateName , String colorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug )
288318 {
289319 return createNewTemplate (templateName , colorCode , logLevel , writeToFile , onlyVerbose , onlyDebug , false );
290320 }
291321 /**
292- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
322+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
293323 */
294324 public static boolean createNewTemplate (Enum <?> templateName , String colorCode , String logLevel , boolean writeToFile , boolean onlyVerbose , boolean onlyDebug )
295325 {
296326 return createNewTemplate (templateName , colorCode , logLevel , writeToFile , onlyVerbose , onlyDebug , false );
297327 }
298328 /**
299- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
329+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
300330 */
301331 public static boolean createNewTemplate (String templateName , String colorCode , String logLevel , boolean writeToFile )
302332 {
303333 return createNewTemplate (templateName , colorCode , logLevel , writeToFile , false , false );
304334 }
305335 /**
306- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
336+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
307337 */
308338 public static boolean createNewTemplate (Enum <?> templateName , String colorCode , String logLevel , boolean writeToFile )
309339 {
310340 return createNewTemplate (templateName , colorCode , logLevel , writeToFile , false , false );
311341 }
312342 /**
313- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
343+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
314344 */
315345 public static boolean createNewTemplate (String templateName , String colorCode , String logLevel )
316346 {
317347 return createNewTemplate (templateName , colorCode , logLevel , true );
318348 }
319349 /**
320- * @see #createNewTemplate(String, String, String, String, boolean, boolean, boolean, boolean, boolean, boolean, String)
350+ * @see #createNewTemplate(String, String, String, String, boolean, boolean, int, boolean, boolean, boolean, boolean, String)
321351 */
322352 public static boolean createNewTemplate (Enum <?> templateName , String colorCode , String logLevel )
323353 {
@@ -336,7 +366,7 @@ private static String createLogString(LogEntry log)
336366 }
337367 private static String getLogEntryDate ()
338368 {
339- DateTimeFormatter dtf = DateTimeFormatter .ofPattern ("yyyy/MM/dd HH:mm:ss" );
369+ DateTimeFormatter dtf = DateTimeFormatter .ofPattern ("yyyy/MM/dd HH:mm:ss:SSS " );
340370 LocalDateTime now = LocalDateTime .now ();
341371
342372 return "[" + dtf .format (now ) + "]" ;
0 commit comments