The SML Logging system is an essential resource when developing your mod, especially for Blueprint mods, which can’t be debugged with a debugger like C++ mods.
The messages you log will be recorded to a text file that is automatically submitted when users use Satisfactory Mod Manager to generate a debug log.
The log file will be replaced at every game launch,
and if you have multiple copies of the game open,
a suffix will be appended to the file name to differentiate them (ex.
By default, the game’s logs will be stored in
You can also view the logs live in a terminal as the game is running.
To view the terminal, add
-log to the game’s launch arguments.
Learn how to configure launch arguments on the
The Log functions provided by the SML blueprint libraries allow for logging strings, which most types can be converted to.
Strings logged with this function will appear under the
LogYourModReference log category,
which will be automatically created if it doesn’t exist yet.
Logging from C++ is usually accomplished via the
This Unreal Engine community wiki page does a good job of explaining how to use the macro, set up your own custom logging categories, and the macro’s formatting capabilities.
An example definition for a log category that matches the name and behavior of SML’s auto-created blueprint logging categories:
DECLARE_LOG_CATEGORY_EXTERN(LogYourModReference, Verbose, All);
In a cpp file where you want to log something:
#include "LogYourModReference.h" // [...] UE_LOG(LogYourModReference, Verbose, TEXT("Hello World!"));
When creating a log category with the
If the category is named
The second argument is the default verbosity, whose value does not need to match with SML’s.
Note that if you redefine the blueprint log category (
As with most C++ macros, making a mistake with the syntax can lead to some messy compile time errors, so compile often when first trying this out to try and catch the mistakes early.
Consider looking at some open source C++ mods for more examples of UE_LOG in practice.
By default, the game will obey the logging verbosity settings configured by CSS,
followed by the settings you set in
With these settings, all mod logging calls will be displayed in the terminal and
You can use the Unreal Engine
LogCategoryFiles launch argument to redirect a specific log category into a separate file.
This means that, in addition to appearing in
they will appear in a file of your choice.
The path specified in the launch argument is relative to your game install directory, not the Local AppData folder like the default log.
For example, using the argument
will put a LogExampleMod.log file at
<your game install path>\SatisfactoryExperimental\Engine\Binaries\Win64\FilteredLogs\LogExampleMod.log
If you want the log file to appear in the same folders as the default FactoryGame.log, you will have to use a full path, for example:
You can group multiple mods into one file with a plus, for example, TODO Arch Example
You can filter which log messages are output via editing your Engine config file.
[Core.Log] Global=Warning LogSML=All LogGame=Verbose LogExampleMod=BreakOnLog
You should also be able to use the
-LogCmds launch argument,
but this has not been tested.
-LogCmds="global warning, SML all"
You may wish for your default log file to be stored in a different location or under a different name than the default.
-LOG="GameLogFileLocationOverride.log" will rename your log file,
but it will still be located in the default folder location.