This lib will add Azure Application Insights to the spring application.
To set up your local environment for development and testing, follow these steps:
- Clone the repository:
git clone https://github.com/EFS-OpenSource/superb-data-kraken-logging.git cd superb-data-kraken-logging - Build the project and install the package to your local Maven repository:
./mvnw clean install
For building and releasing, the azure-pipeline.yml is used. The deployment is triggered on commit. When no git tag is set, a snapshot version will
be build and released to the snapshot repository. When you add a git tag, keep in mind, that the tag will be used as release version.
To receive all information regarding the spring service, the agent needs to get downloaded (azure-pipeline-template.yml)
and added to the container. Add the following block before the docker build step.
# ...
- task: CmdLine@2
displayName: Download Application Insights
inputs:
script: 'curl -L -o applicationinsights-agent.jar https://github.com/microsoft/ApplicationInsights-Java/releases/download/3.4.14/applicationinsights-agent-3.4.14.jar'
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
# ...After the download step in the pipeline, add the applicationinsights-agent.jar to the container and add the javaagent to the ENTRYPOINT.
For the application insights configuration to be found, the APPLICATIONINSIGHTS_CONFIGURATION_FILE environment variable needs to be added to the dockerfile aswell.
# ...
ENV APPLICATIONINSIGHTS_CONFIGURATION_FILE /etc/application/applicationinsights.json
COPY applicationinsights-agent.jar applicationinsights-agent.jar
ENTRYPOINT ["java","-javaagent:/applicationinsights-agent.jar", "-jar","/app.jar","-Xmx=512M"]For Application Insights to work, the config file needs to be added to the container. Add a applicationinsights.json to the config-map.yml.
Adapt the role name to the application name (eg. Organizationmanager Backend). The connectionString is stored in the pipeline variables.
{
"connectionString": "$(app-insights-con-string)",
"role": {
"name": "TODO: APPLICATION NAME"
},
"instrumentation": {
"logging": {
"level": "OFF"
},
"micrometer": {
"enabled": true
}
},
"heartbeat": {
"intervalSeconds": 60
}
}For the configuration to be loaded correctly. An additional entry has to be made in the bootstrap.yml (spring v2) or application-kubernetes.yaml (spring >v3).
#...
config:
paths:
- /etc/application/application.yml
- /etc/application/applicationinsights.json
enable-api: false
reload:
enabled: falseIn order to register the logback configuration for the application, add the following to the application.yaml section in the config-map.yml.
The azure.application-insights.instrumentation-key as well as the logging.config information needs to be added.
azure:
application-insights:
instrumentation-key: $(app-insights-instrumentation-key)
# ...
logging:
config: classpath:com/efs/sdk/logging/sdk.logback.xml
level:
com.efs.sdk: $(logging-level)To include this module in your project, simply add the following dependency declaration to the section of your pom.xml:
<dependency>
<groupId>com.efs.sdk</groupId>
<artifactId>sdk-logging</artifactId>
<version>1.0.0</version>
</dependency>In order to create a audit log in the application, Use the static methods of AuditLogger.
import com.efs.sdk.logging.AuditLogger;
//... Use either the JwtAuthenticationToken Object or the UserId as String
AuditLogger.info(LOG, "creating space {} in organization {}", token, dto.getName(), orgId);
//...Links to tools used for building. Example:
- Maven v3.6.3 (see this Link)
See the Contribution Guide.
See the Changelog.