51 lines
1.5 KiB
Java
51 lines
1.5 KiB
Java
package ru.kirillius.XCP.Logging;
|
|
|
|
import lombok.Getter;
|
|
import ru.kirillius.XCP.Commons.Context;
|
|
import ru.kirillius.java.utils.events.ConcurrentEventHandler;
|
|
import ru.kirillius.java.utils.events.EventHandler;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.logging.Handler;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.LogManager;
|
|
|
|
public class LoggingSystemImpl implements LoggingSystem {
|
|
private final java.util.logging.Logger rootLogger;
|
|
private final Handler handler;
|
|
|
|
@Override
|
|
public Logger createLogger(Class<?> cls) {
|
|
var logger = new LoggerImpl(cls.getSimpleName());
|
|
LogManager.getLogManager().addLogger(logger);
|
|
return logger;
|
|
}
|
|
|
|
@Override
|
|
public Logger createLogger(String name) {
|
|
var logger = new LoggerImpl(name);
|
|
LogManager.getLogManager().addLogger(logger);
|
|
return logger;
|
|
}
|
|
|
|
public LoggingSystemImpl(Context context) {
|
|
eventHandler = new ConcurrentEventHandler<>();
|
|
var logManager = LogManager.getLogManager();
|
|
rootLogger = logManager.getLogger("");
|
|
rootLogger.setLevel(Level.INFO);
|
|
handler = new LogHandlerImpl(this, context);
|
|
Arrays.stream(rootLogger.getHandlers()).forEach(rootLogger::removeHandler);
|
|
rootLogger.addHandler(handler);
|
|
}
|
|
|
|
@Getter
|
|
private final EventHandler<LogMessage> eventHandler;
|
|
|
|
@Override
|
|
public void close() {
|
|
if (handler != null) {
|
|
rootLogger.removeHandler(handler);
|
|
}
|
|
}
|
|
}
|