Skip to main content

Logs

njMule tells what it does in two places: the Log in the app, which shows the events that matter to you, and the log files, which keep everything at the chosen level, with the time and the part of njMule that wrote each line. When you ask for help, the log file is what others will want to see.

The Log in the app​

Open Network → Log (or click the last event in the status strip). Three tabs:

  • Log: njMule's events (connections, servers found, downloads finished, parts found corrupt and downloaded again, warnings, errors), newest at the bottom. Chips with counts narrow it to Error, Warning or Info lines, All shows them all.
  • Server Info: the connections to servers and what the servers say.
  • My Info: your addresses, IDs and the state of eD2K, Kad and the web interface.

Select text with the mouse and copy it with the system's shortcut or the context menu (Copy, Select All). Reset clears the tab shown, not the files. The app shows the latest 2,000 lines of the Log and 500 of Server Info.

Network, Log view: the chips All 9, Error 1, Warning 1, Info 7 and a Reset button above the Log, Server Info and My Info tabs; the log lists dated lines such as njMule started, Connecting to Lighthouse, Connected with a high ID, a part found corrupt and a download completedNetwork, Log view: the chips All 9, Error 1, Warning 1, Info 7 and a Reset button above the Log, Server Info and My Info tabs; the log lists dated lines such as njMule started, Connecting to Lighthouse, Connected with a high ID, a part found corrupt and a download completed
The log, with its chips by level

The web interface has the same Network → Log, and njmule --remote log prints the latest lines of a running njMule (see Remote control).

Log files​

Where njMule runsFolder
Windows%LOCALAPPDATA%\njMule\logs
macOS~/Library/Logs/njMule
Linux~/.local/state/njmule/logs (or $XDG_STATE_HOME/njmule/logs)
Portable mode, --config-dirlogs below the profile's folder
Windows service%ProgramData%\njMule\logs
Docker/njmule/logs in the volume
Synology/var/packages/njmule/var/logs

The current file is njmule.log. It rolls over each day and whenever it reaches 10 MB; older files are compressed as njmule.2026-10-15.0.log.gz (the date, then a number for each file of that day). Files older than 14 days go, and so do the oldest ones once all of them take more than 200 MB.

Each line carries the date and time with the time zone, the level, the thread and the part of njMule that wrote it:

2026-10-15T10:40:03.512+02:00 INFO [main] org.njmule.core.engine.Engine - njMule 0.1.0 started

Line breaks inside messages are replaced, so nothing received from the network can forge a log line. A desktop window that drives another njMule runs no engine and writes no log: that njMule logs on its own computer.

The files hold the addresses of servers and clients and the names of files: share them with care.

Log level​

LevelWhat is written
ERROROnly failures.
WARNFailures and what may need your attention.
INFOThe default: the main events, as in the app's Log, and a little more.
DEBUGDetails for finding a problem; much more text.
TRACEEverything; for developers.

There is no option for it in the options pages. Choose it:

  • for one run, with --log-level: njmule --log-level DEBUG, or njmule-gui --log-level DEBUG, which passes it to the desktop app's engine;
  • for good, with log.level in njmule.properties (edit it while njMule is stopped, or change it through the remote-control API); it takes effect at the next start.
log.level=DEBUG

Commands that do one thing and exit (--search, --download, --hash…) print only errors on the console unless you give --log-level.

Where the console goes​

The headless engine also writes its log to the console (standard output), at the same level.

The systemd user unit sends it to the journal:

journalctl --user -u njmule # the log of the unit
journalctl --user -u njmule -f # follow it as it is written