Skip to content

Core

Module core

This module holds utilities used in other libraries of the toolkit. Check the packages' documentation for more details. You can find a quick recap of the main features in the sections below.

Install the Dependency

This module is not meant to be imported directly. It will be included by using any other part of the toolkit. However, if you only want to use the utilities, logging, etc. (i.e., for a desktop application), you can import it with the following code:

1
2
3
4
5
repositories {
    mavenCentral()
}

implementation("com.hexagonkt:core:$hexagonVersion")
1
2
3
4
5
<dependency>
  <groupId>com.hexagonkt</groupId>
  <artifactId>core</artifactId>
  <version>$hexagonVersion</version>
</dependency>

Package com.hexagonkt.core

JVM information and other useful utilities.

Package com.hexagonkt.core.logging

Provides a logging management capabilities abstracting the application from logging libraries.

The following code block shows the most common use cases for the Logger class:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
val classLogger: Logger = Logger(Runtime::class) // Logger for the `Runtime` class
val instanceLogger: Logger = Logger(this::class) // Logger for this instance's class

logger.info {
    """
    You can add a quick log without declaring a Logger with 'com.hexagonkt.helpers.logger'.
    It is a default logger created for the System class (same as `Logger(System::class)`).
    """
}

classLogger.trace { "Message only evaluated if trace enabled" }
classLogger.debug { "Message only evaluated if debug enabled" }
classLogger.warn { "Message only evaluated if warn enabled" }
classLogger.info { "Message only evaluated if info enabled" }

val exception = IllegalStateException("Exception")
classLogger.warn(exception) { "Warning with exception" }
classLogger.error(exception) { "Error message with exception" }
classLogger.warn(exception)
classLogger.error(exception)
classLogger.error { "Error without an exception" }

instanceLogger.flare { "Prints a log that stands out for ease searching" }

// Logging level can be changed programmatically
LoggingManager.setLoggerLevel(ERROR)
LoggingManager.setLoggerLevel(classLogger::class, DEBUG)
LoggingManager.setLoggerLevel("com.hexagonkt", INFO)

By default, Hexagon uses the Java Util Logging logging library, you can use any of its implementations by just adding another logging adapter as a dependency. Below you can see some alternatives:

Package com.hexagonkt.core.media

Media types definitions and constants for default media types.

Package com.hexagonkt.core.security

Cryptography and key stores utilities.