Package dev.doglog

Class DogLog

java.lang.Object
dev.doglog.DogLog

public class DogLog extends Object
A logger based on WPILib's DataLogManager
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static boolean
    Whether the logger is enabled.
    protected static final EpochLogger
     
    protected static final LogQueuer
     
    protected static DogLogOptions
    The options to use for the logger.
    protected static final Tunable
     
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    clearFault(Enum<?> faultName)
    Reset the count of a fault to 0, and set the alert associated with the fault to inactive if possible.
    static void
    clearFault(String faultName)
    Reset the count of a fault to 0, and set the alert associated with the fault to inactive if possible.
    static void
    decreaseFault(Enum<?> faultName)
    Lower the count of a fault by 1, unless it is already at 0.
    static void
    decreaseFault(String faultName)
    Lower the count of a fault by 1, unless it is already at 0.
    static boolean
    Check if any faults logged using logged using logFault(String) are currently active.
    static boolean
    Check if faults have been logged using logFault(String).
    Get the options used by the logger.
    static boolean
    Returns whether the logger is enabled.
    static void
    log(String key, boolean value)
    Log a boolean.
    static void
    log(String key, boolean[] value)
    Log a boolean array.
    static void
    log(String key, double value)
    Log a double.
    static void
    log(String key, double[] value)
    Log a double array.
    static void
    log(String key, float value)
    Log a float.
    static void
    log(String key, float[] value)
    Log a float array.
    static void
    log(String key, int[] value)
    Log an int array.
    static void
    log(String key, long value)
    Log a long.
    static void
    log(String key, long[] value)
    Log a long array.
    static void
    log(String key, Enum<?> value)
    Log an enum.
    static void
    log(String key, Enum<?>[] value)
    Log an enum array.
    static void
    log(String key, String value)
    Log a string.
    static void
    log(String key, String[] value)
    Log a string array.
    static void
    log(String key, String value, String customTypeString)
    Log a string with a custom type string.
    static <T extends edu.wpi.first.util.struct.StructSerializable>
    void
    log(String key, T value)
    Log a struct.
    static <T extends edu.wpi.first.util.struct.StructSerializable>
    void
    log(String key, T[] value)
    Log a struct array.
    static void
    logFault(Enum<?> faultName)
    Log a fault and create an error type Alert for it.
    static void
    logFault(String faultName)
    Log a fault and create an error type Alert for it.
    static void
    logFault(String faultName, edu.wpi.first.wpilibj.Alert.AlertType alertType)
    Log a fault and create an Alert for it at the specified level.
    static void
    setEnabled(boolean newEnabled)
    Set whether the logger is enabled.
    static void
    Update the options used by the logger.
    static void
    setPdh(edu.wpi.first.wpilibj.PowerDistribution pdh)
    Set the PowerDistribution instance to use for logging PDH/PDP data when logging extras is enabled.
    static void
    time(String key)
    Start a timer to track how long an operation takes to execute.
    static edu.wpi.first.wpilibj2.command.Command
    time(String key, edu.wpi.first.wpilibj2.command.Command command)
    Wraps a Command with a timer that records how long the command runs.
    static void
    Stop a timer started with time(String) and log the duration in seconds to the specified key.
    static void
    Log the current FPGA timestamp.
    static edu.wpi.first.networktables.BooleanSubscriber
    tunable(String key, boolean defaultValue)
    Create a tunable boolean.
    static edu.wpi.first.networktables.BooleanSubscriber
    tunable(String key, boolean defaultValue, edu.wpi.first.util.function.BooleanConsumer onChange)
    Create a tunable boolean.
    static edu.wpi.first.networktables.DoubleSubscriber
    tunable(String key, double defaultValue)
    Create a tunable double.
    static edu.wpi.first.networktables.DoubleSubscriber
    tunable(String key, double defaultValue, DoubleConsumer onChange)
    Create a tunable double.
    static edu.wpi.first.networktables.FloatSubscriber
    tunable(String key, float defaultValue)
    Create a tunable float.
    static edu.wpi.first.networktables.FloatSubscriber
    tunable(String key, float defaultValue, edu.wpi.first.util.function.FloatConsumer onChange)
    Create a tunable float.
    static edu.wpi.first.networktables.IntegerSubscriber
    tunable(String key, long defaultValue)
    Create a tunable integer.
    static edu.wpi.first.networktables.IntegerSubscriber
    tunable(String key, long defaultValue, LongConsumer onChange)
    Create a tunable integer.
    static edu.wpi.first.networktables.StringSubscriber
    tunable(String key, String defaultValue)
    Create a tunable string.
    static edu.wpi.first.networktables.StringSubscriber
    tunable(String key, String defaultValue, Consumer<String> onChange)
    Create a tunable string.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • options

      protected static DogLogOptions options
      The options to use for the logger.
    • logger

      protected static final LogQueuer logger
    • enabled

      protected static boolean enabled
      Whether the logger is enabled.
    • tunable

      protected static final Tunable tunable
    • epochLogger

      protected static final EpochLogger epochLogger
  • Constructor Details

    • DogLog

      protected DogLog()
  • Method Details

    • getOptions

      public static DogLogOptions getOptions()
      Get the options used by the logger.
    • setOptions

      public static void setOptions(DogLogOptions newOptions)
      Update the options used by the logger.

      Example:

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

      See https://doglog.dev/reference/logger-options/ for more information.

    • setPdh

      public static void setPdh(edu.wpi.first.wpilibj.PowerDistribution pdh)
      Set the PowerDistribution instance to use for logging PDH/PDP data when logging extras is enabled. If this is set to `null`, no PDH data will be logged. Otherwise, information like battery voltage, device currents, etc. will be logged.

      Example:

      DogLog.setPdh(new PowerDistribution());
      Parameters:
      pdh - The PowerDistribution instance to use for logging PDH/PDP data.
    • setEnabled

      public static void setEnabled(boolean newEnabled)
      Set whether the logger is enabled. If the logger is not enabled, calls to `log()` functions will not do anything.

      By default, the logger is enabled.

    • isEnabled

      public static boolean isEnabled()
      Returns whether the logger is enabled.
      See Also:
    • log

      public static void log(String key, boolean[] value)
      Log a boolean array.
    • log

      public static void log(String key, boolean value)
      Log a boolean.
    • log

      public static void log(String key, double[] value)
      Log a double array.
    • log

      public static void log(String key, double value)
      Log a double.
    • log

      public static void log(String key, float[] value)
      Log a float array.
    • log

      public static void log(String key, float value)
      Log a float.
    • log

      public static void log(String key, int[] value)
      Log an int array.
    • log

      public static void log(String key, long[] value)
      Log a long array.
    • log

      public static void log(String key, long value)
      Log a long.
    • log

      public static void log(String key, String[] value)
      Log a string array.
    • log

      public static void log(String key, Enum<?>[] value)
      Log an enum array. Enums will be converted to strings with Enum.name().
    • log

      public static void log(String key, String value)
      Log a string.
    • log

      public static void log(String key, String value, String customTypeString)
      Log a string with a custom type string.
    • log

      public static void log(String key, Enum<?> value)
      Log an enum. The enum will be converted to a string with Enum.name().
    • log

      public static <T extends edu.wpi.first.util.struct.StructSerializable> void log(String key, T[] value)
      Log a struct array.
    • log

      public static <T extends edu.wpi.first.util.struct.StructSerializable> void log(String key, T value)
      Log a struct.
    • logFault

      public static void logFault(String faultName, edu.wpi.first.wpilibj.Alert.AlertType alertType)
      Log a fault and create an Alert for it at the specified level.

      See https://doglog.dev/guides/faults for more information.

      Parameters:
      faultName - The name of the fault to log.
      alertType - The type of alert to create for the fault, or null if it should not create an alert
      See Also:
    • logFault

      public static void logFault(String faultName)
      Log a fault and create an error type Alert for it.

      See https://doglog.dev/guides/faults for more information.

      Parameters:
      faultName - The name of the fault to log.
      See Also:
    • logFault

      public static void logFault(Enum<?> faultName)
      Log a fault and create an error type Alert for it. The enum will be converted to a string with Enum.name().

      See https://doglog.dev/guides/faults for more information.

      Parameters:
      faultName - The name of the fault to log.
      See Also:
    • decreaseFault

      public static void decreaseFault(String faultName)
      Lower the count of a fault by 1, unless it is already at 0. If there is an alert associated with the fault, it will be set to inactive once the fault's count is 0.
      Parameters:
      faultName - The name of the fault to decrement the count of.
      See Also:
    • decreaseFault

      public static void decreaseFault(Enum<?> faultName)
      Lower the count of a fault by 1, unless it is already at 0. If there is an alert associated with the fault, it will be set to inactive once the fault's count is 0.
      Parameters:
      faultName - The name of the fault to decrement the count of.
      See Also:
    • clearFault

      public static void clearFault(String faultName)
      Reset the count of a fault to 0, and set the alert associated with the fault to inactive if possible.
      Parameters:
      faultName - The name of the fault to reset.
    • clearFault

      public static void clearFault(Enum<?> faultName)
      Reset the count of a fault to 0, and set the alert associated with the fault to inactive if possible.
      Parameters:
      faultName - The name of the fault to reset.
    • faultsLogged

      public static boolean faultsLogged()
      Check if faults have been logged using logFault(String).
      Returns:
      Whether any faults have been logged.
    • faultsActive

      public static boolean faultsActive()
      Check if any faults logged using logged using logFault(String) are currently active.
      Returns:
      Whether any faults are currently active.
    • timestamp

      public static void timestamp(String key)
      Log the current FPGA timestamp. Useful for recording each time a block of code is executed, since timestamps are unique and monotonically increasing.
      Parameters:
      key - The key to log the timestamp to.
    • time

      public static void time(String key)
      Start a timer to track how long an operation takes to execute. When you call timeEnd(String) the duration of the operation in seconds will be logged to the specified key.
      Parameters:
      key - The key to start the timer for.
      See Also:
    • time

      public static edu.wpi.first.wpilibj2.command.Command time(String key, edu.wpi.first.wpilibj2.command.Command command)
      Wraps a Command with a timer that records how long the command runs. The command name will be copied with a prefix of "Timed".
      Parameters:
      key - The key to log the duration of the command to.
      command - The command to wrap.
      See Also:
    • timeEnd

      public static void timeEnd(String key)
      Stop a timer started with time(String) and log the duration in seconds to the specified key.
      Parameters:
      key - The key to stop the timer for.
      See Also:
    • tunable

      public static edu.wpi.first.networktables.DoubleSubscriber tunable(String key, double defaultValue)
      Create a tunable double.
      Parameters:
      key - The key for the tunable value.
      defaultValue - The default value for the tunable value.
      Returns:
      A DoubleSubscriber used to retrieve the tunable value.
    • tunable

      public static edu.wpi.first.networktables.DoubleSubscriber tunable(String key, double defaultValue, DoubleConsumer onChange)
      Create a tunable double.
      Parameters:
      key - The key for the tunable value.
      defaultValue - The default value for the tunable value.
      onChange - A function to call when the tunable value changes.
      Returns:
      A DoubleSubscriber used to retrieve the tunable value.
    • tunable

      public static edu.wpi.first.networktables.FloatSubscriber tunable(String key, float defaultValue)
      Create a tunable float.
      Parameters:
      key - The key for the tunable value.
      defaultValue - The default value for the tunable value.
      Returns:
      A FloatSubscriber used to retrieve the tunable value.
    • tunable

      public static edu.wpi.first.networktables.FloatSubscriber tunable(String key, float defaultValue, edu.wpi.first.util.function.FloatConsumer onChange)
      Create a tunable float.
      Parameters:
      key - The key for the tunable value.
      defaultValue - The default value for the tunable value.
      onChange - A function to call when the tunable value changes.
      Returns:
      A FloatSubscriber used to retrieve the tunable value.
    • tunable

      public static edu.wpi.first.networktables.BooleanSubscriber tunable(String key, boolean defaultValue)
      Create a tunable boolean.
      Parameters:
      key - The key for the tunable value.
      defaultValue - The default value for the tunable value.
      Returns:
      A BooleanSubscriber used to retrieve the tunable value.
    • tunable

      public static edu.wpi.first.networktables.BooleanSubscriber tunable(String key, boolean defaultValue, edu.wpi.first.util.function.BooleanConsumer onChange)
      Create a tunable boolean.
      Parameters:
      key - The key for the tunable value.
      defaultValue - The default value for the tunable value.
      onChange - A function to call when the tunable value changes.
      Returns:
      A BooleanSubscriber used to retrieve the tunable value.
    • tunable

      public static edu.wpi.first.networktables.StringSubscriber tunable(String key, String defaultValue)
      Create a tunable string.
      Parameters:
      key - The key for the tunable value.
      defaultValue - The default value for the tunable value.
      Returns:
      A StringSubscriber used to retrieve the tunable value.
    • tunable

      public static edu.wpi.first.networktables.StringSubscriber tunable(String key, String defaultValue, Consumer<String> onChange)
      Create a tunable string.
      Parameters:
      key - The key for the tunable value.
      defaultValue - The default value for the tunable value.
      onChange - A function to call when the tunable value changes.
      Returns:
      A StringSubscriber used to retrieve the tunable value.
    • tunable

      public static edu.wpi.first.networktables.IntegerSubscriber tunable(String key, long defaultValue)
      Create a tunable integer.
      Parameters:
      key - The key for the tunable value.
      defaultValue - The default value for the tunable value.
      Returns:
      An IntegerSubscriber used to retrieve the tunable value.
    • tunable

      public static edu.wpi.first.networktables.IntegerSubscriber tunable(String key, long defaultValue, LongConsumer onChange)
      Create a tunable integer.
      Parameters:
      key - The key for the tunable value.
      defaultValue - The default value for the tunable value.
      onChange - A function to call when the tunable value changes.
      Returns:
      An IntegerSubscriber used to retrieve the tunable value.