% extends 'skins/base.html' %>
<% subskin 'content' | markdown %>
RingoJS uses [Simple Logging Facade for Java (SLF4J)](http://www.slf4j.org/) as logging interface,
which allows to plug in any other logging framework including java.util.logging and
[Apache log4j](http://logging.apache.org/log4j/1.2/index.html).
The latter is also bundled with RingoJS and is used as default logging implementation.
The ringo/logging module also provides an interceptor feature that allows other modules to tap into
the logging stream. For example, the `ringo/middleware/responselog`
[middleware](http://ringojs.org/wiki/Middleware/) appends all log messages to the page being rendered,
which is very useful during development.
> [Click here](?info=1) to generate a simple log message.
> [Click here](?error=1) to generate an error log message including stack traces.
RingoJS also comes with a JavaScript profiler middleware that gives you information on what functions
were invoked how often and how long they took to execute. The profiler uses the logging module
to display this data.
> [Click here](?profile=1) to enable the profiler and see its output.
Learn more about [logging](http://ringojs.org/wiki/Logging/) and
[profiling](http://ringojs.org/wiki/Profiler) at the RingoJS wiki.