For application output we use [Logog](http://johnwbyrd.github.com/logog) which is already integrated in OGS. Logog provides several verbosity levels which can be used with simple macro calls:
For application output we use [spdlog](https://github.com/gabime/spdlog) which
is already integrated in OGS. Spdlog provides several verbosity levels which can
be used with simple calls:
```cpp
ERR("An error message!")
WARN("A warning message.")
INFO("An information message...")
ERR("An error message!");
WARN("A warning message.");
INFO("An information message...");
DBUG("A debug message.");
```
As arguments you can use the same functionality as in [sprintf](http://www.cplusplus.com/reference/cstdio/sprintf/):
As arguments you can use the same functionality as in [fmt](https://fmt.dev)---a
modern formatting library:
```cpp
int foo = 9001;
int maxfoo = 9000;
if (foo > maxfoo)
WARN("Foo is over %d! Current value is %d.", maxfoo, foo );
int foo = 42;
double boo = 3.14;
WARN("Foo is {}! Current value is {:10.2g}.", foo, boo);
```
For more information see the [Logog documentation](http://johnwbyrd.github.com/logog/quickstart.html).
For more information see the [spdlog
wiki](https://github.com/gabime/spdlog/wiki).
On release builds the default log level is `INFO`, for debug builds it is