Request of all plugin developers - Verbose Logging

Discussion in 'Plugin Development' started by TnT, May 13, 2012.

Thread Status:
Not open for further replies.
  1. Offline


    I think about 90% of you guys should also invest some time in getting rid of all those damn plugins.
    Sayshal likes this.
  2. Offline


    But moar plugons make mi server c00l ?

    Seriously, I have been trying to et rid of some for ages. It's harder than it looks.
    Sayshal likes this.
  3. Offline


    I'm writing a plugin that should be able to replace a bunch of smaller plugins. Link is in sig if you're interested.
    Sayshal likes this.
  4. Offline


    I'm in. I like this idea. I'll definitely keep this in mind with my next releases.
    Sayshal likes this.
  5. Offline


    I'm writing a plugin that I expect to be rather large. No idea if I'll ever release it to the public, but if I do, I'll make sure to have verbosity options.
  6. Offline


    I agree but I think dev. should put any necessary information still.
  7. Offline


    I'm in no rush to learn java/plugin deving, but I'm curious, how long does it actually take to know how to make simple bukkit plugins without referring you youtube videos every 10 seconds?
  8. Offline

    Sagacious_Zed Bukkit Docs

    It's similar to how one learns to speak a language fluently.
    Jacek likes this.
  9. Offline


    lol, Ive been learning Spanish at school for 3 years and I'm terrible at it.
  10. Offline

    Sagacious_Zed Bukkit Docs

  11. Offline

    Father Of Time

    I started with C# as my primary Object Oriented Languages(OOL), I would say it was about 3 months before I used classes and variable properly (private, public, etc.), about a year before I began using instances properly, and then about 2 years before I used collections properly, keeping in mind I did it here and there as a hobby, no classes or anything of that nature.

    Now you will begin to use the above things almost immediately, but to use them correctly and efficiently is a different story... It's like playing the piano... Technically playing chop sticks is playing the piano, but so is Beethoven 5th... which would you think is doing it "correct"? Anyone can use collections almost immediately, but it takes practice and experience to learn what collections to use and when, and how to store data in the most efficient manner.

    I feel that you must have a firm understanding of objects, classes, variables and instances before you can truly unleash the power of OOL's.
  12. Offline


    It's not so much a steady progression, instead it tends to come in leaps; you build up small pieces of knowledge and you find yourself in a moment where you're experienced enough to understand say why a method differs from a function, or when objects are passed by reference, and you can put the pieces together.

    I'd also agree with Sagacious_Zed . In fact you'll probably find yourself referencing MORE, not less as you get better. Very few people are so specialized in a particular language that they never have to look up something (or at least use the hints that modern IDE's give).
  13. Offline


    I prepared a small example for new developers.

        public void scm(String s){
            if(plugin.getConfig().getBoolean("verbose-logging") == true){
      "["+plugin.getName()+"] "+plugin.getDescription().getVersion()+" "+s);
    Or to use it in your main class:

        public void scm(String s){
            if(this.getConfig().getBoolean("verbose-logging") == true){
      "["+this.getName()+"] "+this.getDescription().getVersion()+" "+s);
    In configuration:

    # log everything in console or not.
    verbose-logging: true
    Easy as that.
    BobbyD441 likes this.
  14. Offline

    Sagacious_Zed Bukkit Docs

    you don't need to see if a boolean is equals to true, a boolean can be either true or false....

    public void scm(String s){
            plugin.getLogger().info(MessageFormat.format("[{0}}] {1}",
              new String[]{plugin.toString(), s});
    or from the main class
    public void scm(String s){
            this.getLogger().info(MessageFormat.format("[{0}}] {1}",
              new String[]{this.toString(), s});
  15. Offline


    Yes I'm aware but I was just providing a quick example or rather something to build off. For new developers probably most don't know that.
  16. Offline


    Lots of interest in this, which is great! Now pass on the word to the other developers!
  17. Offline


    Bump to keep awareness.
  18. I can certainly do this.
  19. Offline


    Long-term project I've been working on has this, as well as a switch for more graceful handling of (some) errors.
  20. I thought about this at first, I used a "debug: true/false" to change whenever it should print additional data... but now I'm just printing messages that NEED to be seen (like: "config.yml has been updated, delete it to see changes!") and the other details I send using log.fine/finer/finest() so they'll only be in the server.log but not in the server's console unless the admin specifies he wants fine messages as described here:
  21. Offline

    Sagacious_Zed Bukkit Docs

    Why do people insist on putting if (booleanVariable == true) and if (booleanVariable == false)
    The following is the traditionally accepted way of denoting the same relationship if(booleanVariable) and if(!booleanVariable)
    where booleanVariable is a boolean variable.

    also common convention is to keep the name of the boolean positive.

    If one is writing example code, all the more reason to write proper examples.
  22. Offline


    I have to admit this is a good idea, at the moment my host's web console cuts off displaying lines when too many happen at the same time. It's a pain when there is errors as those get cut and I have to look at the file instead.
  23. Offline


    I'll keep this in my mind for all future plugins!
  24. Offline


    Example code:
    1. public void log(String message, boolean debug, Level level) {
    2. String prefix = "[GuestUnlock] ";
    3. if (!debug) {
    4. logger.log(level, prefix + message);
    5. } else if (debug && configDebug) {
    6. logger.log(level, prefix + message);
    7. } else if (!configDebug && debug) {
    8. return;
    9. } else {
    10. logger.log(level, prefix + message);
    11. }
    12. }

    Then you would type like this when you should log something:
     log("message", true/false, Level.INFO) 
    Message: the string you want to print
    True/false: Is this for debugging?
    Level.INFO: The logging level

    On my phone, couldn't copy.

    EDIT: Back on computer now, hereĀ“s the code pasted right in.

    Attached Files:

  25. Offline

    Sagacious_Zed Bukkit Docs

    stop using (debug == false), a simple (!debug) and (!configDebug) would have been sufficient. The more bad examples are put up, the more likely someone will find only bad examples.
  26. Offline


    Here is a better way

    1. if (((debug == false) == true) != false){
    2. // things
    3. }
  27. Offline


    ferrybig likes this.
  28. Offline

    Sagacious_Zed Bukkit Docs

    Can't wait for that to show up in someone's plugin /sarcasm
  29. Offline


    Wrong. It is far easier for someone who is just learning to code, to understand
    1. if(blah == true)

    as opposed to
    1. if(blah)

    They are both equally as valid, and in some situations, long hand is easier to understand. You're just being pedantic about it, code that doesn't use shorthand with booleans isn't any less valid, or of any lower quality.
    Jacek likes this.
  30. Offline


    That's why booleans should usually start with 'is', e.g. 'isInDebugMode'.
    For me,
    1. if (isInDebugMode)

    makes much more sense than
    1. if (isInDebugMode == true)
Thread Status:
Not open for further replies.

Share This Page