oppgave: logger

This commit is contained in:
2026-03-03 06:31:50 +01:00
parent 341848f3e8
commit 04a598a5fa
7 changed files with 117 additions and 0 deletions

View 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");
}
}
}

View 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);
}
}
}

View 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);
}

View 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;
}
}