Search⌘ K
AI Features

Exploring Actuators

Explore how to utilize Spring Boot Actuators to monitor and manage your applications. Understand how to access and configure loggers, interpret operational data, and review thread activity to support effective debugging and runtime management.

Accessing loggers with /actuator/loggers

With the loggers exposed, we can list all the various loggers and their levels. Click “Run” in the code widget below and visit the application link:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.5.6</version>
        <relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.greglturnquist</groupId>
	<artifactId>hackingspringbootreactive</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>hackingspringbootreactive</name>
	<description>Project for Hacking with Spring Boot</description>
	<properties>
		<java.version>11</java.version>
        <auto-service.version>1.0-rc5</auto-service.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongodb-driver-sync</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <!-- tag::spring-boot-actuator[] -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- end::spring-boot-actuator[] -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>de.flapdoodle.embed</groupId>
            <artifactId>de.flapdoodle.embed.mongo</artifactId>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <layers>
                        <enabled>true</enabled>
                    </layers>
                </configuration>
            </plugin>
            <!-- tag::git[] -->
            <plugin>
                <groupId>pl.project13.maven</groupId> 
                <artifactId>git-commit-id-plugin</artifactId>
            </plugin>
            <!-- end::git[] -->
            <plugin>
                <groupId>com.fizzed</groupId>
                <artifactId>fizzed-watcher-maven-plugin</artifactId>
                <version>1.0.6</version>
                <configuration>
                    <watches>
                        <watch>
                            <directory>src/main</directory>
                            <exclude>*.css</exclude>
                            <exclude>*.js</exclude>
                            <exclude>*.svg</exclude>
                        </watch>
                    </watches>
                    <goals>
                        <goal>compile</goal>
                        <goal>process-classes</goal>
                    </goals>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>

</project>
Exploring Actuators

We can expect to see something like this when we click on the application link:

  1. The ROOT logger is configured (by Spring Boot itself) to the INFO level.

  2. The effectiveLevel” is INFO` because no other policy overrides it.

  3. The application’s top-level, com, isn’t configured with a log level.

  4. The derived log level for this package is INFO.

Because each package loaded into the system is assessed and split up into sections, entries include, but aren’t limited to:

...