Skip to content
You are viewing documentation for the 2027 version of DogLog.

Extending the logger

In addition to the configurable logger options, DogLog also allows you to extend the logger class to add your own custom behavior. This is a great way to simplify common logging flows your team has, and reduce duplicated code in your robot projects.

This guide will walk you through the steps to create a custom logger class that allows you to add your own custom behavior. As an example, we will add in a new log() method to help log motor values.

  1. Add DogLog to your project if you haven't already:

  2. Create a new file for your extended logger class:

    • Directorysrc
      • Directorymain
        • Directorydeploy/
        • Directoryjava/
          • Directoryfrc/
            • Directoryrobot/
              • CustomLogger.java Create this file
              • Main.java
              • Robot.java
              • RobotContainer.java
  3. In the newly created file, paste the following code:

    src/main/java/frc/robot/CustomLogger.java
    package frc.robot;
    import com.ctre.phoenix6.hardware.TalonFX;
    import dev.doglog.DogLog;
    public class CustomLogger extends DogLog {
    public static void log(String key, TalonFX motor) {
    log(key + "/StatorCurrent", motor.getStatorCurrent().getValue());
    log(key + "/Position", motor.getPosition().getValue());
    log(key + "/Velocity", motor.getVelocity().getValue());
    }
    }
  4. Replace places where you use DogLog with CustomLogger.

    package frc.robot;
    import com.ctre.phoenix6.hardware.TalonFX;
    import dev.doglog.DogLog;
    public class ExampleClass {
    private final TalonFX motor = new TalonFX(1);
    public void logData() {
    DogLog.log("ExampleMotor/StatorCurrent", motor.getStatorCurrent().getValue());
    DogLog.log("ExampleMotor/Position", motor.getPosition().getValue());
    DogLog.log("ExampleMotor/Velocity", motor.getVelocity().getValue());
    CustomLogger.log("ExampleMotor", motor);
    }
    }