mirror of
https://github.com/scottlamb/moonfire-nvr.git
synced 2025-01-29 23:46:00 -05:00
9a5957d5ef
Inspired by the poor error message here: https://github.com/scottlamb/moonfire-nvr/issues/107#issuecomment-777587727 * print the friendlier Display version of the error rather than Debug. Eg, "EROFS: Read-only filesystem" rather than "Sys(EROFS)". Do this everywhere: on command exit, on syncer retries, and on stream retries. * print the most immediate problem and additional lines for each cause. * print the backtrace or an advertisement for RUST_BACKTRACE=1 if it's unavailable. * also mention RUST_BACKTRACE=1 in the troubleshooting guide. * add context in various places, including pathnames. There are surely many places more it'd be helpful, but this is a start. * allow subcommands to return failure without an Error. In particular, "moonfire-nvr check" does its own error printing because it wants to print all the errors it finds. Printing "see earlier errors" with a meaningless stack trace seems like it'd just confuse. But I also want to get rid of the misleading "Success" at the end and 0 return to the OS.
2.3 KiB
2.3 KiB
Troubleshooting
Logs
While Moonfire NVR is running, logs will be written to stderr.
- When running the configuration UI, you typically should redirect stderr
to a text file to avoid poor interaction between the interactive stdout
output and the logging. If you use the recommended
nvr config 2>debug-log
command, output will be in thedebug-log
file. - When running detached through Docker, Docker saves the logs for you.
Try
nvr logs
ordocker logs moonfire-nvr
. - When running through systemd, stderr will be redirected to the journal.
Try
sudo journalctl --unit moonfire-nvr
to view the logs. You also likely want to setMOONFIRE_FORMAT=google-systemd
to format logs as expected by systemd.
Logging options are controlled by environment variables:
MOONFIRE_LOG
controls the log level. Its format is similar to theRUST_LOG
variable used by the env-logger crate.MOONFIRE_LOG=info
is the default.MOONFIRE_LOG=info,moonfire_nvr=debug
gives more detailed logging of themoonfire_nvr
crate itself.MOONFIRE_FORMAT
selects the output format. The two options currently accepted aregoogle
(the default, like the Google glog package) andgoogle-systemd
(a variation for better systemd compatibility).- Errors include a backtrace if
RUST_BACKTRACE=1
is set.
If you use Docker, set these via Docker's --env
argument.
Problems
Error: pts not monotonically increasing; got 26615520 then 26539470
If your streams cut out with an error message like this one, it might mean that your camera outputs B frames. If you believe this is the case, file a feature request; Moonfire NVR currently doesn't support B frames. You may be able to configure your camera to disable B frames in the meantime.
moonfire-nvr config
displays garbage
This happens if your machine is configured to a non-UTF-8 locale, due to
gyscos/Cursive#13. As a workaround, try setting the environment variable
LC_ALL=C.UTF-8
. This should automatically be set with the Docker container.