Gradle
This Gradle build file lists the SLF4J and Log4j dependencies. SLF4J requires the API for compiling and a connector "Log4J-slf4j-impl". Log4j-api and log4j-core are Log4j2 libraries.group 'com.bekwam'
version '1.0-SNAPSHOT'
buildscript {
ext.kotlin_version = '1.0.3'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'java'
apply plugin: 'kotlin'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile 'no.tornado:tornadofx:1.5.5'
compile 'org.slf4j:slf4j-api:1.7.21'
compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.6.2'
compile 'org.apache.logging.log4j:log4j-api:2.6.2'
compile 'org.apache.logging.log4j:log4j-core:2.6.2'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
Log4j Configuration
Put this file "log4j2.xml" on the classpath.<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Usage in Kotlin
Finally, import the library and add a class variable "logger". Then, in your functions you can use a shorter version of isDebugEnabled that reduces the amount of semicolons, curly braces, and parenthesis.import javafx.scene.layout.VBox
import tornadofx.App
import tornadofx.View
import org.slf4j.LoggerFactory
class MainWindow : View() {
var logger = LoggerFactory.getLogger(MainWindow::class.java)
override val root: VBox by fxml()
init {
if( logger.isDebugEnabled )
logger.debug("[INIT]")
}
fun exitApp() {
if( logger.isDebugEnabled )
logger.debug("[EXIT APP]")
System.exit(0);
}
fun lookupUser() {
if( logger.isDebugEnabled )
logger.debug("[LOOKUP USER]")
}
}
class BKCourseApp : App(MainWindow::class)
When started, the app has a menu with items for Exit and Lookup User. With the current configuration, this code will log a message to the console when an action is triggered.
No comments:
Post a Comment