Controlling Logging
Overview
To provide more information about its inner function Ornatrix can log various events which happen inside its code. For example, it can tell you when hair is being generated or when something that wasn't supposed to happen happens. This is useful for finding a source of a problem or just knowing better what Ornatrix is doing under the hood. Whether logging is used and what it outputs can be controlled via MaxScript or an external settings file.
Logging Levels
There are different levels of logging marking the importance of the message which is produced. These are:
- None: Logging is disabled, no messages will be printed
- Error: Unexpected error - a logical error in the code (ASSERT/CHECK) or a fatal environment error (example: a critical file is missing). The app stops execution (if possible, e.g. not being a plugin DLL inside a host), or advises the user to save his work and exit the app.
- Warning: An environment error after which recovery is possible and execution is safe to continue, most likely with some feature failing to work. Example: failed I/O or any OS API call.
- Info: Information which might be of interest to the users, not just to the developers. It's not a problem, execution continues normally. Example: the start or result of a long running operation.
- Verbose: Information for the developers only. Normally this level is disabled when running the release build on the user's machine but can be enabled so that the user can send the log file back to the developers for inspection.
Loggers
There are two locations to which Ornatrix can write log messages:- The MaxScript Listener window
- An external Ornatrix3dsMax.log file located in C:\Users\USERNAME\AppData\Local\Temp directory, or whatever your TEMP environment variable points to
You can control the level of log messages as outlined above which are printed to each of these loggers. For example, you can set only error messages to be written to the listener and nothing to be written to the file.
Setting Log Level
Through MaxScript
Use OxSetLogLevel
command with following syntax to set logging level through MaxScript:
OxSetLogLevel loggerType logLevel
- loggerType: 0 for Script Listener, 1 for File logger
- logLevel: Level of the log messages, starting with 1 in the same order as listed above
For example, to set the maximum logging level and see all messages in MaxScript listener use:
OxSetLogLevel 0 5
Counting Assertions
It may also be useful to know how many internal code assertions happened since the start of the current Max session. This can be used for testing or knowing if something went wrong in your scene. The number of assertions should ideally always be 0. An assertion typically indicates that the scene could be corrupted and that you should save your file and restart 3dsmax.
To get the current number of assertions use the following MaxScript command:
OxGetAssertCount()