2828
2929import com .diffplug .spotless .ThrowingEx ;
3030
31+ import picocli .CommandLine ;
32+
3133public final class LoggingConfigurer {
3234
3335 public static void configureLogging (@ NotNull CLIOutputLevel cliOutputLevel , @ Nullable File logFile ) {
@@ -40,51 +42,79 @@ private static void configureJdkLogging(@NotNull CLIOutputLevel cliOutputLevel,
4042 LogManager .getLogManager ().reset ();
4143
4244 // Create a new console handler
43- Handler rootHandler = createRootHandler (logFile );
45+ final Handler rootHandler = createRootHandler (logFile );
4446
4547 // Set the root logger level to OFF
46- Logger rootLogger = Logger .getLogger ("" );
48+ final Logger rootLogger = Logger .getLogger ("" );
4749 rootLogger .setLevel (Level .OFF ); // only enable specifics
4850 rootLogger .addHandler (rootHandler ); // Add the configured handler
4951
50- Logger spotlessLibLogger = Logger .getLogger ("com.diffplug.spotless" );
51- Logger spotlessCliLogger = Logger .getLogger ("com.diffplug.spotless.cli" );
52+ final Logger spotlessLibLogger = Logger .getLogger ("com.diffplug.spotless" );
53+ final Logger spotlessCliLogger = Logger .getLogger ("com.diffplug.spotless.cli" );
5254
53- ConsoleHandler outputConsoleHandler = new ConsoleHandler ();
54- outputConsoleHandler .setLevel (Level .ALL ); // Set logging level
55+ final ConsoleHandler outputConsoleHandler = new ConsoleHandler ();
56+ outputConsoleHandler .setLevel (Level .ALL ); // make sure everything is logged
5557 outputConsoleHandler .setFormatter (new PlainMessageFormatter ()); // Set formatter
5658
57- Logger outputLogger = Logger .getLogger (Output .OUTPUT_LOGGER_NAME );
58- outputLogger .setLevel (Level .ALL );
59+ final Logger outputLogger = Logger .getLogger (Output .OUTPUT_LOGGER_NAME );
5960 outputLogger .setUseParentHandlers (false );
6061 outputLogger .addHandler (outputConsoleHandler );
6162
62- if (cliOutputLevel == CLIOutputLevel .VVVVV ) {
63- rootLogger .setLevel (Level .ALL );
64- } else if (cliOutputLevel == CLIOutputLevel .VVVV ) {
65- rootLogger .setLevel (Level .INFO );
66- spotlessLibLogger .setLevel (Level .ALL );
67- } else if (cliOutputLevel == CLIOutputLevel .VVV ) {
68- spotlessLibLogger .setLevel (Level .ALL );
69- } else if (cliOutputLevel == CLIOutputLevel .VV ) {
70- spotlessLibLogger .setLevel (Level .INFO );
71- } else if (cliOutputLevel == CLIOutputLevel .V ) {
72- // spotlessLibLogger.setLevel(Level.OFF);
73- spotlessCliLogger .setLevel (Level .INFO );
74- } else if (cliOutputLevel == CLIOutputLevel .DEFAULT ) {
75- // spotlessLibLogger.setLevel(Level.OFF);
76- spotlessCliLogger .setLevel (Level .WARNING );
77- } else if (cliOutputLevel == CLIOutputLevel .QUIET ) {
78- // spotlessLibLogger.setLevel(Level.OFF);
79- spotlessCliLogger .setLevel (Level .SEVERE );
63+ // set the logging level per logger
64+ switch (cliOutputLevel ) {
65+ case QUIET -> {
66+ outputLogger .setLevel (Level .SEVERE );
67+ spotlessCliLogger .setLevel (Level .SEVERE );
68+ spotlessLibLogger .setLevel (Level .SEVERE );
69+ rootLogger .setLevel (Level .SEVERE );
70+ }
71+ case DEFAULT -> {
72+ outputLogger .setLevel (Level .INFO );
73+ spotlessCliLogger .setLevel (Level .WARNING );
74+ spotlessLibLogger .setLevel (Level .WARNING );
75+ rootLogger .setLevel (Level .SEVERE );
76+ }
77+ case V -> {
78+ outputLogger .setLevel (Level .INFO );
79+ spotlessCliLogger .setLevel (Level .INFO );
80+ spotlessLibLogger .setLevel (Level .WARNING );
81+ rootLogger .setLevel (Level .SEVERE );
82+ }
83+ case VV -> {
84+ outputLogger .setLevel (Level .INFO );
85+ spotlessLibLogger .setLevel (Level .INFO );
86+ spotlessCliLogger .setLevel (Level .INFO );
87+ rootLogger .setLevel (Level .SEVERE );
88+ }
89+ case VVV -> {
90+ outputLogger .setLevel (Level .ALL );
91+ spotlessCliLogger .setLevel (Level .ALL );
92+ spotlessLibLogger .setLevel (Level .ALL );
93+ rootLogger .setLevel (Level .SEVERE );
94+ }
95+ case VVVV -> {
96+ outputLogger .setLevel (Level .ALL );
97+ spotlessCliLogger .setLevel (Level .ALL );
98+ spotlessLibLogger .setLevel (Level .ALL );
99+ rootLogger .setLevel (Level .INFO );
100+ }
101+ case VVVVV -> {
102+ outputLogger .setLevel (Level .ALL );
103+ spotlessCliLogger .setLevel (Level .ALL );
104+ spotlessLibLogger .setLevel (Level .ALL );
105+ rootLogger .setLevel (Level .ALL );
106+ }
80107 }
81108 }
82109
83110 private static @ NotNull Handler createRootHandler (@ Nullable File logFile ) {
84111 if (logFile == null ) {
85112 ConsoleHandler consoleHandler = new ConsoleHandler ();
86113 consoleHandler .setLevel (Level .ALL ); // Set logging level
87- consoleHandler .setFormatter (new LogfmtFormatter (LogfmtFormatter .KeyDecorator .MULTI_COLOR )); // Set formatter
114+ LogfmtFormatter .KeyDecorator keyDecorator = CommandLine .Help .Ansi .AUTO .enabled ()
115+ ? LogfmtFormatter .KeyDecorator .MULTI_COLOR
116+ : LogfmtFormatter .KeyDecorator .NONE ;
117+ consoleHandler .setFormatter (new LogfmtFormatter (keyDecorator )); // Set formatter
88118 return consoleHandler ;
89119 }
90120 FileHandler fileHandler = ThrowingEx .get (() -> new FileHandler (logFile .getAbsolutePath (), false ));
0 commit comments