ProjectAres/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/logging/MapdevLogger.java

37 lines
1.3 KiB
Java

package tc.oc.commons.bukkit.logging;
import java.util.Optional;
import java.util.logging.Logger;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.kencochrane.raven.dsn.Dsn;
import tc.oc.api.util.Permissions;
import tc.oc.commons.core.logging.Loggers;
import tc.oc.minecraft.logging.BetterRaven;
/**
* A logger that shows messages to map developers in-game,
* and forwards to the mapdev Sentry.
*
* This logger can be injected and used in any place where
* it might be useful for mapdevs to know about an error.
*/
@Singleton
public class MapdevLogger extends Logger {
@Inject MapdevLogger(Loggers loggers, MapdevSentryConfiguration sentryConfig, Optional<BetterRaven> raven) {
super(loggers.defaultLogger().getName() + ".maps", null);
setParent(loggers.defaultLogger());
setUseParentHandlers(false);
addHandler(new ChatLogHandler(Permissions.MAPERRORS));
if(sentryConfig.enabled() && raven.isPresent()) {
// If a map DSN is configured, create a seperate Raven for the map logger
final Dsn dsn = sentryConfig.dsn();
loggers.defaultLogger().info("Sending mapdev errors to Sentry at " + dsn);
final BetterRaven mapRaven = raven.get().clone(dsn);
mapRaven.listen(this);
}
}
}