Fichiers Log

Les logs sont essentiels au debugging d’un serveur puisqu’ils indiquent ce qui s’est mal passé. Cette page contient les différents fichier de logs de SpongeForge et SpongeVanilla en incluant de courtes descriptions.

Configurer le logging

Certains plugins peuvent logger des messages dont les administrateur n’ont pas besoin, ou bien il peut y en avoir trop et rater des informations importantes. Dans d’autres cas, des plugins ou le serveur loggent des messages de debug qui n’apparaissent pas normalement dans les logs. Cette section explique comment configurer le loggin. Il est aussu possible de séparer les logs sur plusieurs fichiers, l’un par exemple utilisé à des fins de modération qui retient l’activité et le comportement des joueurs et un autre pour que les administrateurs puissent surveiller la stabilité du serveur.

Note

Si vous trouvez qu’un plugin log trop ou pas assez de messages, ou au mauvais niveau, vous devriez en parler avec son auteur.

Le moyen le plus simple de configurer le logging est en modifiant le fichier de configuration log4j2.xml que Minecraft/Forge même utilise. Vous pouvez le trouvez et l’extraire à la racine du forge-...-universal.jar ou minecraft_server.jar. N’éditez pas les fichiers directement dans le jar.

Vous pouvez alors indiquer à log4j2 d’utiliser votre propre configuration en lui pointant le fichier via un paramètre dans le script de démarrage.

java -Dlog4j.configurationFile=log4j2_server.xml -jar server.jar

Le fichier de configuration par défaut ressemble à l’exemple suivant.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" packages="com.mojang.util,net.minecraftforge.server.console.log4j">
    <Appenders>
        <TerminalConsole name="Console">
            <PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level] [%logger]: %msg%n"/>
        </TerminalConsole>

        <RollingRandomAccessFile name="DebugFile" fileName="logs/debug.log" filePattern="logs/debug-%i.log.gz">
            <PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level] [%logger]: %msg%n"/>
            <Policies>
                <OnStartupTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="200MB"/>
            </Policies>
            <DefaultRolloverStrategy max="5" fileIndex="min"/>
        </RollingRandomAccessFile>
    </Appenders>
    <Loggers>
        <Logger level="info" name="org.spongepowered"/>
        <Logger level="info" name="com.example.mod"/>
        <Root level="all">
            <AppenderRef ref="Console" level="info"/>
            <AppenderRef ref="DebugFile"/>
        </Root>
    </Loggers>
</Configuration>

Note

Cet exemple n’inclut pas certains commentaire présent dans l’original, vous devriez les lire pour mieux comprendre pourquoi ils sont là.

La section Appenders définit où les messages sont envoyés. Ça pourrait être un fichier, la console, ou même un serveur de collection et d’analyse de logs. Vous pouvez en apprendre plus sur les appenders ici.

The Loggers section defines filters for loggers and to which targets the messages should be forwarded to. This is usually the section you must edit if you want to mute a specific plugin in the logs. Let’s look into this a bit more:

<Logger level="info" name="com.example.mod"/>

This will limit the logs of com.example.mod to info and higher messages. Beware, this affects all output channels and also any logger that is created for a sub-package of the given path. Read more about filters here.

<Root level="all">
    <AppenderRef ref="Console" level="info"/>
    <AppenderRef ref="DebugFile"/>
</Root>

This section configures two output channels. First, the appender called Console with a log level filter of info and higher, and last, the appender called DebugFile. It is recommended to keep at least one logger to a persistent target such as a file for later error search.

Note

If you are wondering why your new plugin’s log messages don’t seem to show up: The Console’s log level is configured to be at least info by default which hides your debug messages.

If you don’t want to reconfigure the entire logging, but want to hide a certain plugin from the logs you can also use composite logging options. This can be achieved by referencing both the original logging config and your specialized config that only contains the changed logging options. The following example shows this:

java -Dlog4j.configurationFile=log4j2_server.xml,log4j2_custom.xml -jar server.jar
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Loggers>
        <Logger name="com.example.logspammer" level="off"/>
    </Loggers>
</Configuration>

In this example all logs from the com.example.logspammer package won’t be shown or saved. For debugging purposes, it might be useful to include your plugin’s log messages in the console so you don’t have to tail the debug log. This can be achieved using the following example:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Loggers>
        <Logger name="com.example.newplugin" level="all" additivity="false">
            <AppenderRef ref="Console"/>
            [...]
        </Logger>
    </Loggers>
</Configuration>

Astuce

Logging affects performance. If you log too much you might lose a small amount of tps. Also remember that it will become harder to reproduce errors if there are no/incomplete logs available.

Le logfile de SpongeForge

SpongeForge writes several logfiles to the /logs folder located inside your server’s directory. As of Forge 1.12.2 - 14.23.4.2705 these are:

  1. debug.log

  2. latest.log

debug.log

Note

Only a few example lines are shown here. To read the full example log, follow this link: SpongeForge 1.12.2 - 7.1.0-BETA-3126 debug.log file

[main/INFO] [FML]: Forge Mod Loader version 14.23.4.2705 for Minecraft 1.12.2 loading
[main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_162, running on Windows 10:amd64:10.0, installed at C:\Program Files\Java\jre1.8.0_162
[main/DEBUG] [FML]: Java classpath at launch is:
[main/DEBUG] [FML]:     forge-1.12.2-14.23.4.2705-universal.jar
[main/DEBUG] [FML]: Java library path at launch is:
[main/DEBUG] [FML]:     C:\ProgramData\Oracle\Java\javapath

L’exemple de log nous indique que nous utilisons:

  • Forge 14.23.4.2705 (Version 2705)

  • Java 8 64bit Update 162

  • Windows 10 x64

  • le répertoire Java a été installé à (Ligne 4)

Avertissement

In order to run Sponge, you must be running Java 8 Update 20 or above. Older builds or newer Java major versions (like 9 or 10) are not supported.

[main/DEBUG] [FML]: Examining for coremod candidacy spongeforge-1.12.2-2705-7.1.0-BETA-3136.jar
[main/INFO] [FML]: Loading tweaker org.spongepowered.asm.launch.MixinTweaker from spongeforge-1.12.2-2705-7.1.0-BETA-3136.jar

This indicates that SpongeForge 3136 was found and loaded by Forge. For further help regarding the SpongeForge naming scheme, have a look at Lire le nom du fichier en téléchargement.

latest.log

Note

Only a few example lines are shown here. To read the full example log, follow this link: SpongeForge 1521 latest.log

C’est ce que vous devriez voir dans la fenêtre de votre serveur Minecraft.

Le logfiles de SpongeVanilla

latest.log

Note

Only a few example lines are shown here. To read the full example log, follow this link: SpongeVanilla 1.12.2-7.1.0-BETA-54 latest.log

C’est ce que vous devriez voir dans la fenêtre de votre serveur Minecraft.

Lire les logfiles

Si vous ne savez pas comment lire un crashlog, vous trouverez de l’aide ici, mais tout d’abord vous aurez besoin d’un crashlog. Pour cette courte introduction, nous allons juste utiliser un exemple de crash de la page Debugging : Exemple de crashlog d'une version obsolète de SpongeForge.

WARNING: coremods are present:
SpongeCoremod (sponge-1.8-1499-2.1DEV-575.jar)
Contact their authors BEFORE contacting forge

La première chose que vous remarquerez est qu’il y a un Warning, pour montrer qu’un coremod est présent, mais ne vous en faites pas, ce n’est pas une erreur, ce message ne sert qu’à dire qu’il faut contacter le support de Sponge et non pas Forge.

java.lang.NoClassDefFoundError: org/spongepowered/api/event/game/state/GameStartingServerEvent

On trouve ci-dessous les quelques lignes de l’erreur actuelle. Dan ce cas c’est une NoClassDefFoundError, si vous n’êtes pas sûr de savoir ce que cela signifie, faites un tour sur la page Debugging. Si c’est une erreur commune, elle sera listée là-bas. Si ce n’est pas le cas, vous pouvez toujours demandez de l’aide sur les forums ! Mais assurez vous de fournir le crashlog complet.

Heureusement, les détails sur votre système figurent au bas du crashlog:

Minecraft Version: 1.8
Operating System: Windows 8.1 (amd64) version 6.3
Java Version: 1.8.0_51, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 515666256 bytes (491 MB) / 782761984 bytes (746 MB) up to 1847590912 bytes (1762 MB)
JVM Flags: 0 total;
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.10 FML v8.0.99.99 Minecraft Forge 11.14.3.1521 5 mods loaded, 5 mods active
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
UC     mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
UC     FML{8.0.99.99} [Forge Mod Loader] (forge.jar)
UC     Forge{11.14.3.1521} [Minecraft Forge] (forge.jar)
UC     Sponge{1.8-1499-2.1DEV-575} [SpongeForge] (minecraft.jar)
U      Core{unknown} [Core Plugin] (Core.jar)
Loaded coremods (and transformers):
SpongeCoremod (sponge-1.8-1499-2.1DEV-575.jar)

Cela indique que

  • Minecraft 1.8 avec Forge 1521 fonctionne avec

  • Java 8 Update 51 (64bit version) et que

  • 2 autres mods sont installés

    • SpongeForge 1.8-1499-2.1DEV-575 (qui est la version #575) et

    • Core

Note

Notez que les trois autres mods installés (mcp, FML, Forge) sont requis pour chaque serveur Forge et sont essentiels pour le faire fonctionner proprement.

Maintenant, les hypothèses suivantes peuvent être formulées:

  • le plugin a sûrement fait crasher le serveur

  • SpongeForge ne correspond pas à la version de Forge: la version 1499 est requise, mais c’est la version 1521 qui est installée

Si vous voulez savoir comment résoudre cette erreur, consultez notre checklist de la page Debugging.

Erreurs communes

Parcourez la page Debugging pour en savoir davantage sur les erreurs et exceptions courantes.