Tutoriel Comment lire des logs

Elikill

Développeur Java trop occupé
23 Février 2014
1 387
204
187
23
eliapp.fr
Bonjour,

Je vois plein de messages qui parlent de logs. Donc aujourd'hui, je suis ici pour expliquer ou les trouver, comment les lires ...
N'hésitez pas à me dire s'il faut que je change un truc.
Bref, commençons.

Sommaire:

I - Les quoi ?
II - D'où viennent-ils ? Où les trouver ?
III - C'est cool, on sait les trouver, mais pourquoi les utiliser ?
IV - J'ai une erreur, comment la régler ?
V - Quelques erreurs fréquentes

VI - Une erreur n'est pas ici, HELP !


I - Les quoi ?

Les logs, traduit "journal", qui concentre toutes les informations du type "démarrage de X a 08:55".
Ils existent car ils sont très utile: Savoir quand le serveur a démarré, quel est la version exacte, qu'est ce qui a été lancé ...
Un exemple concrète :
Jean-Michel report Patrick car il a insulté, apparemment vers 14h12.
Donc, on va voir dans les logs, on cherche a 14h12 ce qu'il s'est passé, et la:
Code:
[14:12:42 INFO]: <Patrick> niquez vos mere les putes
Donc, les logs montre que Jean-Michel a raison. Ainsi, le modérateur n'a plus qu'à faire son travail.

II - D’où viennent-ils ? Où les trouver ?

Ils proviennent de 2 sources :
1) Le serveur en lui-même qui va informer du chargement d'un monde par exemple.
2) Un plugin comme ViaVersion qui va envoyer plein de "Loading mapping x.x.x -> x.x.x" pour expliquer ce qu'il fait.

Lorsque vous lancez le serveur, vous avez une console. Celle-ci affiche les logs (les mêmes que ceux qui sont sauvegardé dans les fichiers).

Pour Spigot, Sponge et Velocity:
Ils sont trouvable dans le dossier "logs" à la racine de votre serveur.
Les logs actuels sont dans "latest.log".
Les anciens se trouve dans des fichiers log.gz, nommé en fonction de la date.

Pour Bungeecord:
C'est différent. Ils sont dans "proxy.log.X", où "proxy.log.0" correspond aux logs actuel.

III - C'est cool, on sait ou les trouver, mais pourquoi les utiliser ?

Le champ des possibles est infini.
  • Comme dans l'exemple donné précédemment, pour les modérateurs
  • Pour les développeurs, lors du debug
  • Vérifier qu'un plugin s'est bien lancé
  • Parfois, certains plugins disent "Check logs for further informations"

Ils sont essentiels lorsque vous vous dites "sa fonktion pa". Ils font parties des premières choses à vérifier.
Exemple:
Vous trouvez que ViaVersion fonctionne mal après un /reload ?
Regardez les logs, et la:
Code:
[ViaVersion] ViaVersion is disabling, if this is a reload and you experience issues consider rebooting.
Ce qui veut dire que si vous avez un problème après un reload, redémarrer votre serveur et après ça devrait aller. Donc pas besoin de leur report le problème, il suffit d'éviter le reload (vrai conseil) et ça devrait aller.

IV - J'ai une erreur, comment la régler ?

Passons aux choses sérieuses. Je fais ce tutoriel surtout pour ça.
Pour des questions de pratiques, les logs proviennent de serveur spigot car ce sont les plus courants. Il n'y a que l'affichage qui change pour les autres plateformes.
Tout d'abord, regardons une erreur complète :
Code:
[11:56:58 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'test' in plugin EliTest v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_251]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_251]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_251]
Caused by: java.lang.NumberFormatException: For input string: "a"
        at java.lang.NumberFormatException.forInputString(Unknown Source) ~[?:1.8.0_251]
        at java.lang.Integer.parseInt(Unknown Source) ~[?:1.8.0_251]
        at java.lang.Integer.parseInt(Unknown Source) ~[?:1.8.0_251]
        at com.elikill58.plugintest.TestCommand.on Command(TestCommand.java:35) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        ... 15 more

Cette erreur est bourré d'informations.
Tout d'abord, première ligne: "executing command 'test' in plugin EliTest v1.0". Grâce à cette ligne, on sait:
1) Que cette erreur arrive quand on fait la commande "/test"
2) Commande qui appartient au plugin "EliTest"
3) Plugin qui est en version 1.0

Ah ce moment, plusieurs questions à se poser:
Le plugin est bien en dernière version ? Sais-t'on jamais, peut-être que ce problème a été réglé.
Si ce n'est pas le cas, comme c'est une commande: est-ce qu'il ne manque pas quelque chose ? Regardons les lignes suivantes pour répondre à cette question.

Il y a de nombreuses lignes, qui sont nécessaires pour le développeur, mais j'en reparlerai plus tard.

Ensuite, une ligne est différente des autres, et elle commence par "Caused by".
"java.lang.NumberFormatException: For input string: "a""
Décortiquons ces quelques mots :
"java" : Elle provient de java directement (pas le serveur, mais ça aussi j'en reparlerai après)
"NumberFormatException" : Une erreur dans le "format d'un nombre" (note: si vous ne savez pas à quoi ça correspond, une simple recherche google vous en diras beaucoup)
"Input string "a"" : Input = entrée, string = chaîne de caractère. Donc, il parle de la chaîne de caractère "a".

Si on rassemble les informations: Java essaie de transformer la chaîne de caractère "a" qui a été entrée en un nombre. Sauf que, coup dur mais ce n'est pas un nombre.

Donc, si vous avez fait "/test a", peut-être qu'il faut faire "/test 1" ? Allez vérifier la documentation de la commande/la page spigotmc du plugin.

V - Quelques erreurs fréquentes

Maintenant que vous savez récupérer les informations les plus importantes d'une erreur, regardons quelques exemples.

a) ClassNotFoundException

Traduction: "Classe introuvable". Une classe correspond à un fichier de code, mais je ne suis pas la pour vous faire un cours sur le Java.

Donc, voici l'erreur complète:
Code:
[12:16:35 ERROR]: Error occurred while enabling EliTest v1.0 (Is it up to date?)
java.lang.NoClassDefFoundError: com/elikill58/negativity/spigot/SpigotNegativity
        at com.elikill58.plugintest.Main.onEnable(Main.java:26) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:741) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.Bukkit.reload(Bukkit.java:535) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:412) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:375) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_251]
Caused by: java.lang.ClassNotFoundException: com.elikill58.negativity.spigot.SpigotNegativity
        at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_251]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_251]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_251]
        ... 17 more

De la même manière que précédemment, lisons.
"occured while enabling EliTest" Cette information est surtout pratique pour le créateur du plugin: il sait quand elle apparaît, ici au démarrage.
Mais ce n'est pas ça qui nous intéresse.
"Caused by: java.lang.ClassNotFoundException: com.elikill58.negativity.spigot.SpigotNegativity"
Cette ligne dit tout. Elle ne trouve pas la class à l'adresse "com.elikill58.negativity.spigot.SpigotNegativity". Il faut donc l'ajouter, puisque cela semble être une dépendance. Pour cela, si un plugin est bien développé:
domaine.pseudo.pluginName.untruc.ToutLeContenuDuPlugin
Ici,
domaine: "com"
pseudo: "elikill58" (c mwa)
pluginName: "negativity" (c mon pl)

Donc Negativity manque à l'appel. Alors installons le.
Si vous l'avez déjà, mais que vous avez cette erreur: allez voir s'il y a une mise à jour à faire.

b) InvalidConfigurationException

Code:
[12:15:52] [Server thread/ERROR]: Cannot load plugins\PluginTest\config.yml
org.bukkit.configuration.InvalidConfigurationException: while scanning a simple key
in 'string', line 6, column 3:
      permission:untruc.inutile
      ^
could not find expected ':'
in 'string', line 7, column 3:
      material: "DIAMOND_PICKAXE"
      ^

    at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:57) ~[spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:226) ~[spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:169) ~[spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:180) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:188) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:162) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at com.elikill58.ultimatehammer.UltimateTool.<init>(UltimateTool.java:20) [UltimateHammer.jar:?]
    at com.elikill58.ultimatehammer.tools.HammerManager.<init>(HammerManager.java:25) [UltimateHammer.jar:?]
    at com.elikill58.ultimatehammer.UltimateHammer.onEnable(UltimateHammer.java:23) [UltimateHammer.jar:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:414) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:378) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:333) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:263) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:525) [spigot-1.8.8.jar:git-Spigot-db6de12-3f3c65f]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_251]

Tout à l'heure, je vous parlais d'erreur provenant de Java. Ici, ce n'est pas une erreur de "java.lang" mais "org.bukkit.configuration". Donc, elle a été créé par Bukkit.
Bref, examinons la.
"InvalidConfigurationException: while scanning a simple key" Rien qu'au nom "Invalid configuration", on peut tout te suite se dire que le problème vient d'une mauvaise configuration. Plus précisément, le serveur n'arrive pas à trouver la clé (normalement c'est "key: value")

Juste avant on parlais de "Cannot load plugins\PluginTest\config.yml", donc on sait quel fichier est mal configuré (ici plugins/PluginTest/config.yml

Grâce à la suite, on s’aperçoit qu'il y a des lignes inédites des erreurs habituels:
" in 'string', line 6, column 3:
permission:untruc.inutile
^
could not find expected ':'
in 'string', line 7, column 3:
material: "DIAMOND_PICKAXE"
^"

Et ce sont elles qui nous apportent ce qui nous manquait: Ligne 6.
Il nous montre la ligne 6. Comme normalement il faut : "key: value", ajoutons l'espace entre "permission:" et "untruc.inutile" et c'est bon !

VI - Une erreur n'est pas ici, HELP !

Traduit la, et ça pourra peut-être t'aider.
Ensuite, je t'invite à aller sur google. C'est un très beau site !
Tu peux chercher l'erreur en elle même (donc par exemple: "Error occurred while enabling EliTest v1.0 (Is it up to date?)
java.lang.NoClassDefFoundError: com/elikill58/negativity/spigot/SpigotNegativity") pour voir si d'autres personnes ont eu le même problème, et ainsi éviter le repost.

Enfin, d'autres erreurs peuvent arriver. Je ne les connais pas toutes car il y en a des milliers, mais j'essaie de vous montrer les plus courantes.

VII - Merci !

De rien bg.
 
Dernière édition:

Elikill

Développeur Java trop occupé
23 Février 2014
1 387
204
187
23
eliapp.fr
Salut,

Voila, c'est tout pour moi
Ah ce moment, j'te voyais comme ça:

1589898713884.png


Perso, j'avais cherché (google et ici) et rien trouvé, pour ça que je l'ai fais >.<
 

Denox

Aventurier
15 Avril 2020
6
0
1
37
Hey ! Merci pour ce petit tuto ! Mais quand j'ouvre un fichier .gz dans mes logs, ça me met une suite de chiffres et de lettres chelous. Quelqu'un peux m'aidez SVP

Hey ! Merci pour ce petit tuto ! Mais quand j'ouvre un fichier .gz dans mes logs, ça me met une suite de chiffres et de lettres chelous. Quelqu'un peux m'aidez SVP
C'est bon j'ai trouvé comment faire