Skip to content

Create own custom logger

This example shows how to create and use a custom logger.

Custom loggers are used to group logs by system and keep output structured.

→ Deep dive: [[Logger|Core-API/Logging/Logger]]


Steps

  1. Register a logger
  2. Use the logger to log messages
  3. Keep logs structured and meaningful

Implementation

public class LoggerMethods {

    @NotNull
    private final Logger logger;

    public LoggerMethods() {
        // register a logger with a unique name
        this.logger = BukkitCoreLibrary.getLoggerHandler().registerLogger("example");
    }

    public void iterateOnlinePlayers() {
        long start = System.currentTimeMillis();

        logger.info("Starting iteration");

        PlayerHandler playerHandler = BukkitCoreLibrary.getPlayerHandler();

        for (BukkitPixelPlayer onlinePlayer : playerHandler.getOnlinePlayers()) {
            logger.info("Found: " + onlinePlayer.getName());
        }

        logger.info("Finished iteration in: " + (System.currentTimeMillis() - start) + "ms");
    }

}

Explanation

  • registerLogger(name) creates a logger for a specific system
  • Logs are grouped by the given name
  • .info(...) logs messages with info level

Notes

  • Always use meaningful logger names (e.g. system name)
  • Avoid spamming logs in loops or frequent tasks
  • Use logs to debug and monitor behavior
  • Measure execution time for important operations

🐧 You are ready!

You now covered all basic systems of the Core API.

From here, you can start building your own features or extend existing systems.