Skip to content

Usage

Once installed, getting started with DogLog is super easy:

Logging

First, import the library from the dev.doglog namespace:

import dev.doglog.DogLog;

And then you can use Doglog.log() to log values like so:

DogLog.log("Arm/Position", motor.getPosition().getValue());

You can include these log statements in your periodic methods, or anywhere else you want to log data.

Configuring

DogLog comes with a safe, reasonable default configuration out of the box, but most users will want to customize it to their needs.

Here’s an example of how to set DogLog to use custom options:

  1. Import the library at the top of Robot.java/RobotContainer.java:

    import dev.doglog.DogLog;
    import dev.doglog.DogLogOptions;
  2. In your Robot/RobotContainer constructor, add the following lines:

    DogLog.setOptions(new DogLogOptions().withNtPublish(true));

    This configures DogLog to use the default options as a base, and extends them to publish logged fields to NetworkTables.

Logging PDH/PDP data

If you have logging extras enabled, DogLog can automatically log data from the PDP/PDH like battery voltage, device currents, etc.

To enable this, somewhere in your robot code provide a PowerDistribution instance to DogLog.setPdh():

DogLog.setPdh(new PowerDistribution());

Calling DogLog.setPdh(null) will disable PDH logging.

Full example

RobotContainer.java
package frc.robot;
import dev.doglog.DogLog;
import dev.doglog.DogLogOptions;
import edu.wpi.first.wpilibj.PowerDistribution;
import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.button.CommandXboxController;
import edu.wpi.first.wpilibj2.command.button.Trigger;
import frc.robot.Constants.OperatorConstants;
import frc.robot.commands.ExampleCommand;
import frc.robot.subsystems.ExampleSubsystem;
public class RobotContainer {
private final ExampleSubsystem m_exampleSubsystem = new ExampleSubsystem();
private final CommandXboxController m_driverController = new CommandXboxController(
OperatorConstants.kDriverControllerPort
);
public RobotContainer() {
DogLog.setOptions(new DogLogOptions().withNtPublish(true));
DogLog.setPdh(new PowerDistribution());
DogLog.log("ExampleLog", "Hello world!");
configureBindings();
}
private void configureBindings() {
// ...
}
}