Last updated on 16th July 2024
The Simudyne SDK uses SLF4J (Simple Logging Facade for Java) for logging. SLF4J is an abstraction over common logging frameworks which means it can be used with most common Java logging frameworks (e.g. java.util.logging, logback, log4j), so that if you are already using one of these frameworks you can continue using this framework for your simulation so that your logging is consistent. To make use of this so that logging is not just done in the console, you will need to choose one of these frameworks to work with. For this example, we will be using Log4J.
You will then need to follow the specific instructions for configuring the logger you have chosen, which can be found on the websites of the specific frameworks. We will be showing you an example configuration using log4j. More detailed instructions on configuring log4j can be found here.
There are many possible ways of configuring log4j. We will be using a properties file. Create a file called log4j.properties, in the resources folder of your project. (Resources folders are created in the path projectName/src/main/resources).
log4j.properties
log4j.rootCategory=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{ISO8601} [%4p] [%t] %c - %m%n
log4j.logger.org.apache.hadoop.yarn=WARN
log4j.logger.org.apache.spark=WARN
log4j.logger.org.apache.spark.jetty=WARN
The log4j properties file is used to set the log level (so you can choose if you want to see all debug, info, warn or error messages), and other details about where to log to and with what format. We are only logging Error and Warn messages here and logging everything to the console.
We could log to a specific file with the following properties.
appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=${filename}/propertieslogs.log
appender.file.layout.type=PatternLayout