1

Since we updated Spring Boot from 2.1.6 to 2.3.0 (or 2.3.1) we are missing log output in Azure Application Insights. The logs are printed to stdout when running local. Deployed to an aks cluster, the logs are visible with "kubectl logs" but missing in the application insights.

Resetting the Spring Boot version to 2.1.6 lets the log reappear again.

This is the pom of the application (shortened)

<?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 http://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.3.1.RELEASE</version>
    </parent>

    <groupId>XXXXXXX</groupId>
    <artifactId>spring-boot-service-parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <packaging>pom</packaging>

    <distributionManagement>
    </distributionManagement>

    <repositories>
    </repositories>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.11</java.version>
        <maven.compiler.release>11</maven.compiler.release>

        <container.image.name>service/${project.artifactId}</container.image.name>
        <container.image.tag>${project.version}.${build.number}</container.image.tag>

        <junit.jupiter.version>5.6.2</junit.jupiter.version>
        <feign.version>10.3.0</feign.version>
        <mockito.version>2.23.0</mockito.version>
        <apache.httpclient.version>4.5.10</apache.httpclient.version>
        <lombok.version>1.18.8</lombok.version>
        <spring.cloud.version>2.1.3.RELEASE</spring.cloud.version>
        <springfox.version>2.9.2</springfox.version>
        <appinsights.version>2.6.1</appinsights.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        <dependency>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>applicationinsights-spring-boot-starter</artifactId>
            <version>${appinsights.version}</version>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-contract-stub-runner</artifactId>
                <version>${spring.cloud.version}</version>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <artifactId>spring-boot-starter-web</artifactId>
                        <groupId>org.springframework.boot</groupId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-core</artifactId>
                <version>${feign.version}</version>
            </dependency>
            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-jackson</artifactId>
                <version>${feign.version}</version>
            </dependency>
            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-httpclient</artifactId>
                <version>${feign.version}</version>
            </dependency>
            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-slf4j</artifactId>
                <version>${feign.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0-M2</version>
                <executions>
                    <execution>
                        <id>enforce-java</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireJavaVersion>
                                    <version>11</version>
                                </requireJavaVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>build-info</goal>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <artifactItems>
                        <artifactItem>
                            <groupId>com.microsoft.azure</groupId>
                            <artifactId>applicationinsights-agent</artifactId>
                            <version>2.5.1</version>
                            <type>jar</type>
                            <overWrite>false</overWrite>
                            <destFileName>applicationinsights-agent.jar</destFileName>
                        </artifactItem>
                    </artifactItems>
                    <outputDirectory>${project.build.directory}/libs</outputDirectory>
                    <overWriteReleases>false</overWriteReleases>
                    <overWriteSnapshots>true</overWriteSnapshots>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

The controller class:

@Slf4j
@RequestMapping("/xxx")
@RestController
public class LogController {
    @GetMapping(value = "/logtest")
    public String logSomething() {
        log.debug("This is a DEBUG message");
        log.info("This is an INFO message");
        return "hallo hallo";
    }
}

Finally the AI-Agent.xml file:

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
    <Instrumentation>
        <BuiltIn enabled="true">

            <!-- capture logging via Log4j 1.2, Log4j2, and Logback, default is true -->
            <Logging enabled="true" threshold="debug"/>

            <!-- capture outgoing HTTP calls performed through Apache HttpClient, OkHttp,
                 and java.net.HttpURLConnection, default is true -->
            <HTTP enabled="true" W3C="true" enableW3CBackCompat="false"/>

            <!-- capture JDBC queries, default is true -->
            <JDBC enabled="false"/>

            <!-- capture Redis calls, default is true -->
            <Jedis enabled="false"/>

            <!-- capture query plans for JDBC queries that exceed this value (MySQL, PostgreSQL),
                 default is 10000 milliseconds -->
            <MaxStatementQueryLimitInMS>1000</MaxStatementQueryLimitInMS>

        </BuiltIn>
    </Instrumentation>
</ApplicationInsightsAgent>

Thank you very much and greetings Matchr

0 Answers0