Une application Java autonome qui envoie des journaux à CloudWatch Logs avec slf4j / logback

Prenez note avant d'oublier. Je faisais un échantillon pour comprendre le mécanisme d'envoi de journaux à CloudWatch Logs, mais je n'ai pas trouvé de site auquel faire référence.

supposition

  1. Je ne veux pas en faire autant que possible → Utiliser OSS sur Github
  2. Je souhaite envoyer avec le code minimum
  3. Compatible Gradle

résultat

Maintenant ça.

https://github.com/kojiisd/cloudwatch-logs-java-standalone

OSS utilisé

cloudwatch-logback-appender https://github.com/j256/cloudwatch-logback-appender

Comment utiliser

Si vous modifiez le contenu de logback.xml, vous pouvez librement faire circuler le journal dans une certaine mesure.

    <appender name="CLOUDWATCH" class="com.j256.cloudwatchlogbackappender.CloudWatchAppender">
        <region>us-east-1</region>
        <accessKeyId>XXXXXXX</accessKeyId>
        <secretKey>XXXXXXX</secretKey>
        <logGroup>test-loggroup</logGroup>
        <logStream>test-logstream</logStream>
        <layout>
            <pattern>[%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - %msg%n</pattern>
        </layout>
        <maxBatchSize>32</maxBatchSize>
    </appender>

accesskeyidOusecretkeySemble aller à la awsconfig de la machine d'exécution si l'élément lui-même est supprimé (bien que je ne l'ai pas essayé)

Résultat d'exécution

Le journal a été correctement envoyé vers CloudWatch Logs. (Si le groupe de journaux ou le flux de journaux n'existe pas, il sera créé)

スクリーンショット 2019-02-17 19.18.35.png

point important

Évidemment, afin d'envoyer des données à CloudWatch Logs dans la bibliothèque, nous effectuons diverses initialisations et envois de données. Étant donné que ce processus est exécuté dans les threads, lorsque le processus de journalisation de l'appelant se termine et que l'application se termine, le côté thread enfant se termine également automatiquement et le journal n'est pas envoyé à CloudWatch Logs. (En fait, je ne pense pas qu'il soit possible d'envoyer des journaux avec une application aussi autonome, donc je ne pense pas que ce soit vraiment un problème.) J'ai remarqué en regardant la source du côté OSS.

Pour éviter cela, j'ai intentionnellement mis le traitement Sleep dans l'implémentation pendant environ 20 secondes.

Résumé

C'était très facile à réaliser si je n'entrais pas dans les points de prudence.

Recommended Posts

Une application Java autonome qui envoie des journaux à CloudWatch Logs avec slf4j / logback
Une histoire que j'ai eu du mal à défier le pro de la concurrence avec Java
Comment interagir avec un serveur qui ne plante pas l'application
Comment créer une application avec un mécanisme de plug-in [C # et Java]
Déployez des applications Web Java sur Azure avec maven
J'ai essayé de casser le bloc avec java (1)
Créer une image docker pour exécuter une application Java simple
Soumettre une tâche à AWS Batch avec Java (Eclipse)
Journal de sortie vers un fichier externe avec slf4j + logback avec Maven
[Java] Comment rompre une ligne avec StringBuilder
[Java] exemple de logback slf4j
Je veux écrire une boucle qui fait référence à un index avec l'API Stream de Java 8
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
Programme Java pour redimensionner une photo dans un carré avec des marges
J'ai essayé de moderniser une application Java EE avec OpenShift.
[Rails] J'ai essayé de créer une mini application avec FullCalendar
Comment déployer une application Java Servlet simple sur Heroku
[Débutant] Essayez de créer un jeu RPG simple avec Java ①
[Débutant] Application Android qui fait rouler des balles à l'aide de capteurs [Java]
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
Comment déployer une application kotlin (java) sur AWS Fargate
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
Comment développer et enregistrer une application Sota en Java
Un mémo pour démarrer la programmation Java avec VS Code (version 2020-04)
Comment gérer le type auquel j'ai pensé en écrivant un programme Java pendant 2 ans
Java pour jouer avec Function
Connectez-vous à DB avec Java
Connectez-vous à MySQL 8 avec Java
Un moyen intelligent d'unifier les enregistreurs à SLF4J dans Java / build.gradle entry / 2019
Comment implémenter un travail qui utilise l'API Java dans JobScheduler
Comment déployer une application qui référence un pot local à heroku
Connexion à une base de données avec Java (partie 1) Peut-être la méthode de base
Remplacer par une valeur selon la correspondance avec une expression régulière Java
Je voulais écrire un processus équivalent à une instruction while avec l'API Java 8 Stream
Lors de l'appel de sshpass depuis Java avec shell etc., il semble qu'il soit nécessaire d'avoir un chemin.