Integrating Mule 4 logging with Microsoft Azure Insights is a simple task when you make use of custom Log4j2 ApplicationInsightsAppender appender. The only minor issue is Munit testing that seems to be using a different classloader that fails to find custom appender libraries and throws errors. No such classloader issues when running the application.
src/main/resources/log4j2.xml
<?xml version="1.0" encoding="utf-8"?>
<Configuration packages="com.microsoft.applicationinsights.log4j.v2">
<Appenders>
<RollingFile name="file" fileName="${sys:mule.home}${sys:file.separator}logs${sys:file.separator}my-sapi.log"
filePattern="${sys:mule.home}${sys:file.separator}logs${sys:file.separator}my-sapi-%i.log">
<PatternLayout pattern="%-5p %d [%t] %X{correlationId}%c: %m%n" />
<SizeBasedTriggeringPolicy size="10 MB" />
<DefaultRolloverStrategy max="10"/>
</RollingFile>
<ApplicationInsightsAppender name="aiAppender" instrumentationKey="${sys:instrumentationKey}" />
</Appenders>
<Loggers>
<!-- Http Logger shows wire traffic on DEBUG. -->
<AsyncLogger name="org.mule.service.http.impl.service.HttpMessageLogger" level="INFO" />
<AsyncLogger name="org.mule.service.http" level="WARN"/>
<AsyncLogger name="org.mule.extension.http" level="WARN"/>
<!-- Mule classes -->
<AsyncLogger name="org.mule" level="INFO"/>
<AsyncLogger name="com.mulesoft" level="INFO"/>
<AsyncLogger name="aiAppender" level="INFO"/>
<AsyncRoot level="INFO">
<AppenderRef ref="file" />
<AppenderRef ref="aiAppender" />
</AsyncRoot>
</Loggers>
</Configuration>
pom.xml
<applicationinsights.version>2.6.4</applicationinsights.version>
<dependencies>
<!-- Application Insights dependencies. -->
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-log4j2</artifactId>
<version>${applicationinsights.version}</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-web</artifactId>
<version>${applicationinsights.version}</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-core</artifactId>
<version>${applicationinsights.version}</version>
</dependency>
</dependencies>