oppgave: logger
This commit is contained in:
48
src/main/java/oving6/logger/DistributingLogger.java
Normal file
48
src/main/java/oving6/logger/DistributingLogger.java
Normal file
@@ -0,0 +1,48 @@
|
||||
package oving6.logger;
|
||||
|
||||
public class DistributingLogger implements ILogger {
|
||||
ILogger errorLogger;
|
||||
ILogger warningLogger;
|
||||
ILogger infoLogger;
|
||||
|
||||
DistributingLogger(ILogger errorLogger, ILogger warningLogger, ILogger infoLogger) {
|
||||
this.errorLogger = errorLogger;
|
||||
this.warningLogger = warningLogger;
|
||||
this.infoLogger = infoLogger;
|
||||
}
|
||||
|
||||
void setLogger(String severity, ILogger logger) {
|
||||
switch (severity) {
|
||||
case "error":
|
||||
errorLogger = logger;
|
||||
break;
|
||||
case "warning":
|
||||
warningLogger = logger;
|
||||
break;
|
||||
case "info":
|
||||
infoLogger = logger;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Invalid severity level for logger");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void log(String severity, String message, Exception exception) {
|
||||
switch (severity) {
|
||||
case "error":
|
||||
errorLogger.log(severity, message, exception);
|
||||
break;
|
||||
case "warning":
|
||||
warningLogger.log(severity, message, exception);
|
||||
break;
|
||||
case "info":
|
||||
infoLogger.log(severity, message, exception);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Invalid severity level for logger");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
29
src/main/java/oving6/logger/FilteringLogger.java
Normal file
29
src/main/java/oving6/logger/FilteringLogger.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package oving6.logger;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class FilteringLogger {
|
||||
private ILogger logger;
|
||||
private HashMap<String, Boolean> logging = new HashMap<String, Boolean>();
|
||||
|
||||
FilteringLogger(ILogger logger, String... severities) {
|
||||
this.logger = logger;
|
||||
for (String severity : severities) {
|
||||
logging.put(severity, true);
|
||||
}
|
||||
}
|
||||
|
||||
boolean isLogging(String severity) {
|
||||
return logging.getOrDefault(severity, false);
|
||||
}
|
||||
|
||||
void setIsLogging(String severity, boolean value) {
|
||||
logging.put(severity, value);
|
||||
}
|
||||
|
||||
void log(String severity, String message, Exception exception) {
|
||||
if (isLogging(severity)) {
|
||||
logger.log(severity, message, exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
9
src/main/java/oving6/logger/ILogger.java
Normal file
9
src/main/java/oving6/logger/ILogger.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package oving6.logger;
|
||||
|
||||
public interface ILogger {
|
||||
String ERROR = "error";
|
||||
String WARNING = "warning";
|
||||
String INFO = "info";
|
||||
|
||||
void log(String severity, String message, Exception exception);
|
||||
}
|
||||
31
src/main/java/oving6/logger/StreamLogger.java
Normal file
31
src/main/java/oving6/logger/StreamLogger.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package oving6.logger;
|
||||
|
||||
import java.io.OutputStream;
|
||||
|
||||
public class StreamLogger implements ILogger {
|
||||
private OutputStream stream;
|
||||
private String formatString = "%s: %s (%s)";
|
||||
|
||||
StreamLogger(OutputStream stream) {
|
||||
this.stream = stream;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void log(String severity, String message, Exception exception) {
|
||||
try {
|
||||
String logMessage = String.format(formatString, severity, message, exception) + "\n";
|
||||
stream.write(logMessage.getBytes());
|
||||
stream.flush();
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void setFormatString(String formatString) {
|
||||
if (formatString == null) {
|
||||
throw new IllegalArgumentException("formatString cannot be null");
|
||||
}
|
||||
this.formatString = formatString;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user