All pages
Powered by GitBook
1 of 1

Loading...

Status Logger

Introduced in 2026, Status Logger serves as the official solution to logging CAN status frames for REV devices. Previously, the third-party library, Unofficial REV-Compatible Logger (URCL), was the only solution for logging raw CAN data for REV devices, but Status Logger brings the core logging functionality natively to REVLib.

URCL still has its benefits over Status Logger, but the main benefit of Status Logger is that it is enabled by default and requires no setup. This is especially useful for a CSA diagnosing a problem with a team that may not have had the foresight to setup logging.

Status Logger supports the following devices:

  • SPARK Flex

  • SPARK MAX

  • Servo Hub

  • MAXSpline Encoder

The code docs for Java and C++ are available below:

Status Logger will automatically log .revlog files to the roboRIO internal storage if no USB drive is attached. It is recommended to insert an external USB drive for storing .revlog files to reduce clutter on the roboRIO. Any inserted USB drive will be automatically logged to after it is initially plugged in and power cycled.

Status Logger is enabled by default on the first invocation of any REVLib device object, thus requiring no user setup for default behavior.

If desired, call the disableAutoLogging() static method to disable automatic logging. This method must be called before any other REVLib function is invoked. The recommended placement is as the first line in your robotInit() method. After calling this, logging will not occur until it is explicitly started with start(). This is useful for applications that require full manual control over the logging lifecycle.

With automatic logging disabled, the start() and stop() static methods can be called to start and stop writing data to the .revlog file when desired. An example use case could be calling start() at the beginning of autonomousInit() or teleopInit() and calling stop() at the beginning of disabledInit(). To avoid any expected behaviors, it is recommended to call disableAutoLogging() as described above before implementing manual logging.

To prevent overflowing the logging storage device, Status Logger has the following safeguards in place:

  • When the log storage device has less than 100 MB of free space remaining, StatusLogger sends a warning message to consider deleting old .revlog files off of the storage device.

  • When the log storage device has less than 50 MB of free space remaining, the oldest .revlog files in the log storage device are automatically deleted until the free space available is greater than 50 MB.

Each .revlog file is named by start timestamp in the format: REV_<Year><Month><Day>_<Hour><Minute><Second>.revlog After logging, there are two ways of retrieving the .revlog file depending on your robot setup.

If there is no USB drive plugged into the roboRIO, files can be retrieved via FTP. See on roboRIO FTP. The .revlog files are logged to "/home/lvuser/logs/" on the roboRIO.

If there is a USB drive plugged into the roboRIO, files can be retrieved from the "/u/logs/" directory with the flash drive plugged in. Alternatively, the flash drive can be simply unplugged and inserted into any device to access the .revlog files.

.revlog files are not viewable in typical FRC log viewing tools and must first be converted to a .wpilog, where the raw CAN data of the .revlog is parsed into individual timestamped signals.

The recommended and easiest way is to open .revlog files directly in , where they are automatically converted to .wpilog files. See the for more information.

The second option is to use the . The NPM package allows you to integrated the converter into any node project while also enabling you to run it as a command line tool if installed globally. See the package documentation for more information.

When the log storage device has less than 5 MB of free space remaining, logging is stopped automatically. Deleting .revlog files can be done by accessing the file storage device through the methods described below and simply deleting the files to free up space.

Robot setup

Code setup

Disabling Auto Logging

Manual Logging

Logging safeguards

Retrieving .revlog files

roboRIO Storage

External USB Drive

Viewing .revlog Files

Java
C++
WPILib docs
AdvantageScope
AdvantageScope's docs
revlog-converter NPM package
import com.revrobotics.util.StatusLogger;

@Override
public void robotInit() {
  StatusLogger.disableAutoLogging();
}
#include "rev/util/StatusLogger.h"

Robot::Robot() {
  StatusLogger::DisableAutoLogging();
}
import com.revrobotics.util.StatusLogger;

@Override
public void robotInit() {
  StatusLogger.disableAutoLogging();
}

@Override
public void autonomousInit() {
  StatusLogger.start();
}

@Override void teleopInit() {
  StatusLogger.start();
}

@Override
public void disabledInit() {
  StatusLogger.stop();
}
#include "rev/util/StatusLogger.h"

Robot::Robot() {
  StatusLogger::DisableAutoLogging();
}

void Robot::AutonomousInit() {
  StatusLogger::Start();

}

void Robot::TeleopInit() {
  StatusLogger::Start();
}

void Robot::DisabledInit() {
  StatusLogger::Stop();
}