Package dev.doglog

Class DogLog

java.lang.Object
dev.doglog.DogLog

public class DogLog extends Object
A logger based on WPILib's DataLogManager
  • 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(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 StructSerializable> void log(String key, T[] value)
      Log a struct array.
    • log

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

      public static void logFault(String faultName, 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 Command time(String key, 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 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 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 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 FloatSubscriber tunable(String key, float defaultValue, 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 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 BooleanSubscriber tunable(String key, boolean defaultValue, 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 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 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 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 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.