Exploring Actuators

Learn how to access, explore and modify the loggers exposed by the actuator.

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 ...