MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Bien logger ses mods

    Planifier Épinglé Verrouillé Déplacé Autres
    20 Messages 6 Publieurs 7.2k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • EclipseOnFireE Hors-ligne
      EclipseOnFire
      dernière édition par

      @‘Superloup10’:

      new LoggerManager(event.getModLog(), Paths.get("modid.txt"));
      

      Pourquoi ne peut-on pas changé le .txt en .log, par exemple?

      On peut mais c’est mieux d’utiliser un format reconnu par 80% des OS et qui pourra être ouvert facilement par les joueurs.

      Travaille sur un super serveur, Wirestone.

      1 réponse Dernière réponse Répondre Citer 0
      • Superloup10S Hors-ligne
        Superloup10 Modérateurs
        dernière édition par

        Bah, les fichiers de config en .cfg ne sont pas ouvert par tout les OS, non plus.

        Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

        Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

        1 réponse Dernière réponse Répondre Citer 0
        • EclipseOnFireE Hors-ligne
          EclipseOnFire
          dernière édition par

          @‘Superloup10’:

          Bah, les fichiers de config en .cfg ne sont pas ouvert par tout les OS, non plus.

          Ouais mais ça c’est pas moi qui les ai faits 😛

          Travaille sur un super serveur, Wirestone.

          1 réponse Dernière réponse Répondre Citer 0
          • Superloup10S Hors-ligne
            Superloup10 Modérateurs
            dernière édition par

            Une question, je suis entrain de coder le fichier de log et j’ai une erreur sur cette ligne:

            writer.write(record.getMessage("<" + getDate() + "> [" + record.getLevel().getLocalizedName() + "] " + record.getMessage()) + "\n");
            

            J’en ai déduis que cette ligne ne fonctionne que pour les mods Minecraft, non?

            Donc que suis-je sensé mettre à la place?

            Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

            Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

            1 réponse Dernière réponse Répondre Citer 0
            • RedRelayR Hors-ligne
              RedRelay Moddeurs confirmés
              dernière édition par

              @Superloup10 : Tu as quoi comme erreur ? Normalement ça ne dépend pas de Minecraft.

              @EclipseOnFire :
              Pourquoi as-tu utiliser un BufferedWriter et pas un PrintWriter ?
              Pourquoi le constructeur de ton loggerManager est en public ? Alors qu’apparemment de la manière dont tu l’a écrit, c’est un singleton ? Si tu fais des accès concurrentiels vers ton loggers, il va crash et faire planter tout le mod.

              Comment logger dans plusieurs fichiers ? (avec ta méthode on ne peut pas :P)

              TOUS les OS gèrent les .log et les .cfg.

              Je trouve qu’il y a plus simple que ce que tu fais par moment.
              Je vais tenter de proposé un tutoriel similaire au tiens, mais avec ma vision des choses quand j’aurais le temps 😉

              En ce moment je suis pas mal occupé ^^ En dehors de mon taff, je suis entrain de modifier une application pour qu’elle respecte le pattern-design MVC et c’est pas gagné xD Puis il faut aussi que je m’occupe de cette histoire de balise de traduction pour le forum 😉

              En réalité je suis incapable de faire des tutos pour forge, car je n’ai pas encore vraiment mis les pieds dans l’API.
              Je crée juste une gamme d’outils pour les moddeurs minecraft qui se veut indépendante de toute API.
              Mais logger l’exécution de son code ne relève pas de l’API forge 😉

              –------------------------------------------------------------------------------------
              Si tu trouves mon intervention pertinente, n'hésite pas a m…

              1 réponse Dernière réponse Répondre Citer 0
              • Superloup10S Hors-ligne
                Superloup10 Modérateurs
                dernière édition par

                Eclipse me dit:
                The method getMessage() in the type LogRecord is not applicable for the arguments (String)

                Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

                1 réponse Dernière réponse Répondre Citer 0
                • GuguG Hors-ligne
                  Gugu
                  dernière édition par

                  Une fonction get ne prend pas d’arguments, sauf peut-être un identifiant ( Numérique ) normalement.

                  "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
                  ― Jordan B. Peterson

                  1 réponse Dernière réponse Répondre Citer 0
                  • RedRelayR Hors-ligne
                    RedRelay Moddeurs confirmés
                    dernière édition par

                    getMessage() ne prend pas de paramètre.
                    Je ne comprend pas ce que tu veux faire exactement. Quel message veux-tu stocker ?
                    pourquoi tu n’utilise pas LoggerManager.instance.getLogger().info(“ton_message_d’information”) ?
                    C’est très crade comme notation mais je fais ce que je peux avec ce qui est marqué dans le tuto ^^

                    Non Gugu42, sinon on aurait “The method getMessage(int) in the type LogRecord is not applicable for the arguments (String)”

                    –------------------------------------------------------------------------------------
                    Si tu trouves mon intervention pertinente, n'hésite pas a m…

                    1 réponse Dernière réponse Répondre Citer 0
                    • GuguG Hors-ligne
                      Gugu
                      dernière édition par

                      Je parle en général, non pas dans ce cas précis 😉

                      Parfois, des méthodes get prennent un int, mais en général, pas ce cas précis 😛

                      "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
                      ― Jordan B. Peterson

                      1 réponse Dernière réponse Répondre Citer 0
                      • RedRelayR Hors-ligne
                        RedRelay Moddeurs confirmés
                        dernière édition par

                        Autant pour moi, j’ai mal compris désolé 🙂

                        –------------------------------------------------------------------------------------
                        Si tu trouves mon intervention pertinente, n'hésite pas a m…

                        1 réponse Dernière réponse Répondre Citer 0
                        • Superloup10S Hors-ligne
                          Superloup10 Modérateurs
                          dernière édition par

                          Je me doutais que getMessage ne prends pas de paramètre donc j’en déduis que le tuto comporte une erreur à ce niveau là.

                          Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                          Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

                          1 réponse Dernière réponse Répondre Citer 0
                          • RedRelayR Hors-ligne
                            RedRelay Moddeurs confirmés
                            dernière édition par

                            Oui, j’ai testé, le tutoriel comporte bien une erreur 😉
                            @EclipseOnFire voulait surement voir si on suivait 😛

                            EDIT : http://www.minecraftforgefrance.fr/showthread.php?tid=496&pid=5358#pid5358
                            Voila ce que j’ai fais, les sources sont sur github donc si tu veux jeter un oeil @EclipseOnFire, jette un oeil sur ma classe LoggerManager 😉
                            C’est pas commenté, mais normalement il n’y a rien de compliquer a comprendre sauf peut-être la manière dont j’implémente le coté bufferisé de ma classe TerminalOutput 😉 Mais bon ça m’évite de lancer le vidage du tampon dans le thread graphique et de gérer les accès concurentiels au contenu du Terminal ^^

                            –------------------------------------------------------------------------------------
                            Si tu trouves mon intervention pertinente, n'hésite pas a m…

                            1 réponse Dernière réponse Répondre Citer 0
                            • EclipseOnFireE Hors-ligne
                              EclipseOnFire
                              dernière édition par

                              Oui je viens de voir où est l’erreur. C’est bon c’est corrigé, j’ai dû faire une faute de frappe lorsque j"ai transcrit mon code sur le forum.

                              @Superloup
                              Change la ligne en :

                              writer.write(record.getMessage() + "<" + getDate() + "> [" + record.getLevel().getLocalizedName() + "] " + record.getMessage() + "\n");
                              

                              Merci de m’avoir signalé le bug, c’est corrigé !

                              @Blackout

                              Pourquoi as-tu utiliser un BufferedWriter et pas un PrintWriter ?

                              Heu parce que là où j’ai développé ce Logger, j’avais besoin d’un BufferedWriter. En plus il me semble avoir lu que les Buffered sont plus rapides et qu’ils sont adaptés à Java NIO2 donc bon…

                              Pourquoi le constructeur de ton loggerManager est en public ? Alors qu’apparemment de la manière dont tu l’a écrit, c’est un singleton ? Si tu fais des accès concurrentiels vers ton loggers, il va crash et faire planter tout le mod.

                              Heu… Tu peux me montrer un exemple s’il te plait ? Ce sera plus clair pour moi ! 😛

                              Comment logger dans plusieurs fichiers ? (avec ta méthode on ne peut pas)

                              Rien n’empêche d’avoir plusieurs fichiers de configuration, il suffit juste de créer une nouvelle instance de LoggerManager avec un autre fichier et avec le même Logger. Il suffira ensuite de conserver un seul Logger qui loggera dans tous les autres fichiers, celui qui sera en instance quoi… En plus j’ai voulu faire un Logger simple, pas trop complexe.

                              TOUS les OS gèrent les .log et les .cfg.

                              Oui tu as raison, mais je ne parle pas de l’encodage ni du format, mais de l’extension. Sous 90% des ordis tu double clic sur un .txt et ça s’ouvre. Essaye sur un .cfg ou un .log, il faudra définir un programme par défaut. Voilà pourquoi. Sinon tu peux le modifier ya pas de problème ^^.

                              Au niveau des petites erreurs tu voulais sûrement parler de la suppression du fichier alors que je pourrais simplement mettre le writer en mode “write” ?
                              J’ai choisi ça car certains OS ne donnent pas directement la permission au programme d’écrire le fichier. Donc, en créant/supprimant le fichier dés le début, on s’assure d’avoir les permissions. S’il n’y en a pas, ça bugge à cet endroit là, et pas au niveau de l’écriture du fichier.

                              Travaille sur un super serveur, Wirestone.

                              1 réponse Dernière réponse Répondre Citer 0
                              • RedRelayR Hors-ligne
                                RedRelay Moddeurs confirmés
                                dernière édition par

                                PrintWriter sert a écrire des chaînes de caractères, BufferedWriter sert a écrire des octects de manière générale.
                                Ici on n’écrit que des caractères imprimables. Les 2 sont toute aussi performantes, si ce n’est la signification de ton code.
                                Quand tu lis le code de quelqu’un et que tu vois un PrintWriter, tu sais qu’il ne s’agit que de chaînes de caractères imprimables 😉

                                Pour les accès concurrentiels, renseignes toi sur le multithreading en java 😉

                                Pour les extension, il faut que les gens apprennent à s’en servir 😉 tu ne codes pas pour des grand-mères de 90 ans qui ne se mettront jamais a l’informatique. un fichier de log c’est un .log, et indique le contenu du fichier qui généralement n’est pas créé par l’utilisateur, mais de manière automatique. Dans ce cas la, tu peux modifier tout tes fichiers plain-text en .txt, même tes pages php et html 😉 Enfin bref, ça n’a que peu d’importance 😉

                                le gros probleme de ta version c’est que si l’écriture échoue, tu ne loggeras rien du tout !

                                –------------------------------------------------------------------------------------
                                Si tu trouves mon intervention pertinente, n'hésite pas a m…

                                1 réponse Dernière réponse Répondre Citer 0
                                • EclipseOnFireE Hors-ligne
                                  EclipseOnFire
                                  dernière édition par

                                  @‘Blackout’:

                                  PrintWriter sert a écrire des chaînes de caractères, BufferedWriter sert a écrire des octects de manière générale.
                                  Ici on n’écrit que des caractères imprimables. Les 2 sont toute aussi performantes, si ce n’est la signification de ton code.
                                  Quand tu lis le code de quelqu’un et que tu vois un PrintWriter, tu sais qu’il ne s’agit que de chaînes de caractères imprimables 😉

                                  Pour les accès concurrentiels, renseignes toi sur le multithreading en java 😉

                                  Pour les extension, il faut que les gens apprennent à s’en servir 😉 tu ne codes pas pour des grand-mères de 90 ans qui ne se mettront jamais a l’informatique. un fichier de log c’est un .log, et indique le contenu du fichier qui généralement n’est pas créé par l’utilisateur, mais de manière automatique. Dans ce cas la, tu peux modifier tout tes fichiers plain-text en .txt, même tes pages php et html 😉 Enfin bref, ça n’a que peu d’importance 😉

                                  le gros probleme de ta version c’est que si l’écriture échoue, tu ne loggeras rien du tout !

                                  Ah d’accord ^^. Bah c’est sûr que c’est un peu mieux oui 😛

                                  Ah oui je vois… Je pensais pas que ça pouvait se faire pour un mod. Il me suffirait donc de déclarer l’écriture de fichier “synchronized” ?
                                  Seulement les entités Minecraft ne devraient-t-elles pas être synchronized puisque les entités sont actualisées à chaque tick en plus d’être modifiées par les mods et les events Forge ?

                                  Oui je suis d’accord, mais je dis pas qu’on peut pas le changer hein…

                                  Si l’écriture échoue, je ne logge rien dans mon fichier log, c’est sûr, mais je logge quand même dans la console qui est transcrite dans les logs de Forge et dans la console du launcher (s’il est resté ouvert pendant que MC s’exécute).

                                  Travaille sur un super serveur, Wirestone.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • isadorI Hors-ligne
                                    isador Moddeurs confirmés Modérateurs
                                    dernière édition par

                                    question: une faut faire ce pour chaque mod? ou on peut créer un mod pour tout notre modpack?

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • 1 / 1
                                    • Premier message
                                      Dernier message
                                    Design by Woryk
                                    ContactMentions Légales

                                    MINECRAFT FORGE FRANCE © 2024

                                    Powered by NodeBB