Skip to content

Commit 5703733

Browse files
author
Gonzalo Diaz
committed
[REFACTOR] Custom Logger: Class refactor, singleton encapsulated in a new class with new static (shorcut) methods. Preserve the interface.
1 parent 28ddb44 commit 5703733

File tree

3 files changed

+84
-58
lines changed

3 files changed

+84
-58
lines changed

algorithm-exercises-java/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ configurations.checkstyle {
6363

6464
def jacocoExclusions = [
6565
'**/*App.class',
66-
'**/CustomLogger.class'
66+
'**/util/*'
6767
];
6868

6969
test {
Lines changed: 81 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,100 @@
11
package util;
22

33
/**
4-
* CustomLogger.
5-
*
6-
* @link https://www.logicbig.com/tutorials/core-java-tutorial/logging/levels.html
4+
* Log.
75
*/
86
public class CustomLogger {
97

10-
private CustomLogger() {}
11-
12-
public static final String LOGGER_NAME = "projecteuler";
13-
private static java.util.logging.Logger log;
14-
158
/**
16-
* Common logger singleton.
9+
* LoggerSingleton.
10+
*
11+
* @link https://www.logicbig.com/tutorials/core-java-tutorial/logging/levels.html
1712
*/
18-
@SuppressWarnings({"java:S106", "java:S4792"})
19-
public static java.util.logging.Logger getLogger() {
13+
private class LoggerSingleton {
2014

21-
// default log level
22-
String logLevel = System.getenv("LOG_LEVEL");
15+
private LoggerSingleton() {}
2316

24-
if (logLevel == null) {
25-
logLevel = "INFO";
26-
}
17+
public static final String LOGGER_NAME = "projecteuler";
18+
private static java.util.logging.Logger log;
19+
20+
/**
21+
* Common logger singleton.
22+
*/
23+
@SuppressWarnings({"java:S106", "java:S4792"})
24+
public static java.util.logging.Logger getLogger() {
25+
26+
// default log level
27+
String logLevel = System.getenv("LOG_LEVEL");
2728

28-
logLevel = logLevel.toUpperCase();
29-
30-
// Singleton initalization
31-
if (log == null) {
32-
log = java.util.logging.Logger.getLogger(CustomLogger.LOGGER_NAME);
33-
34-
java.util.logging.Level level;
35-
36-
switch (logLevel) {
37-
case "INFO":
38-
level = java.util.logging.Level.INFO;
39-
break;
40-
case "DEBUG":
41-
level = java.util.logging.Level.FINE;
42-
break;
43-
case "FINE":
44-
level = java.util.logging.Level.FINE;
45-
break;
46-
case "WARN":
47-
level = java.util.logging.Level.WARNING;
48-
break;
49-
case "WARNING":
50-
level = java.util.logging.Level.WARNING;
51-
break;
52-
case "ERROR":
53-
level = java.util.logging.Level.SEVERE;
54-
break;
55-
case "SEVERE":
56-
level = java.util.logging.Level.SEVERE;
57-
break;
58-
default:
59-
level = java.util.logging.Level.INFO;
29+
if (logLevel == null) {
30+
logLevel = "INFO";
6031
}
6132

62-
System.out.println("Setting LOG_LEVEL: " + level.getName());
33+
logLevel = logLevel.toUpperCase();
34+
35+
// Singleton initalization
36+
if (log == null) {
37+
log = java.util.logging.Logger.getLogger(LoggerSingleton.LOGGER_NAME);
38+
39+
java.util.logging.Level level;
40+
41+
switch (logLevel) {
42+
case "INFO":
43+
level = java.util.logging.Level.INFO;
44+
break;
45+
case "DEBUG":
46+
level = java.util.logging.Level.FINE;
47+
break;
48+
case "FINE":
49+
level = java.util.logging.Level.FINE;
50+
break;
51+
case "WARN":
52+
level = java.util.logging.Level.WARNING;
53+
break;
54+
case "WARNING":
55+
level = java.util.logging.Level.WARNING;
56+
break;
57+
case "ERROR":
58+
level = java.util.logging.Level.SEVERE;
59+
break;
60+
case "SEVERE":
61+
level = java.util.logging.Level.SEVERE;
62+
break;
63+
default:
64+
level = java.util.logging.Level.INFO;
65+
}
66+
67+
System.out.println("Setting LOG_LEVEL: " + level.getName());
68+
69+
log.setLevel(level);
6370

64-
log.setLevel(level);
71+
log.info("INFO LEVEL ENABLED");
72+
log.warning("WARNING LEVEL ENABLED");
73+
log.fine("FINE LEVEL ENABLED");
74+
log.finest("FINEST LEVEL ENABLED");
75+
}
6576

66-
log.info("INFO LEVEL ENABLED");
67-
log.warning("WARNING LEVEL ENABLED");
68-
log.fine("FINE LEVEL ENABLED");
69-
log.finest("FINEST LEVEL ENABLED");
77+
return log;
7078
}
79+
}
80+
81+
public static java.util.logging.Logger getLogger() {
82+
return LoggerSingleton.getLogger();
83+
}
84+
85+
public static void info(String message) {
86+
LoggerSingleton.getLogger().log(java.util.logging.Level.INFO, message);
87+
}
88+
89+
public static void warning(String message) {
90+
LoggerSingleton.getLogger().log(java.util.logging.Level.WARNING, message);
91+
}
92+
93+
public static void error(String message) {
94+
LoggerSingleton.getLogger().log(java.util.logging.Level.SEVERE, message);
95+
}
7196

72-
return log;
97+
public static void debug(String message) {
98+
LoggerSingleton.getLogger().log(java.util.logging.Level.FINE, message);
7399
}
74100
}

sonar-project.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Must be unique in a given SonarQube instance
22
sonar.projectKey=sir-gon_algorithm-exercises-java
3-
sonar.organization", "sir-gon"
3+
sonar.organization="sir-gon"
44

55
# This is the name and version displayed in the SonarQube UI.
66
# Was mandatory prior to SonarQube 6.1.
@@ -11,7 +11,7 @@ sonar.projectVersion=1.0
1111
# Replace "\" by "/" on Windows.
1212
# This property is optional if sonar.modules is set.
1313
sonar.sources=algorithm-exercises-java/src/main/java/ae
14-
sonar.exclusions=**/App.java,**/CustomLogger.java
14+
sonar.exclusions=**/App.java,**/util/*.java
1515

1616
sonar.coverageReportPaths=algorithm-exercises-java/build/jacoco.xml
1717

0 commit comments

Comments
 (0)