[LIB] ErrorLogger 1.1.5 - Errors Made Beautiful!

Discussion in 'Resources' started by Icyene, Oct 13, 2012.

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

    Icyene

    No, because its not checking is its null: its trying to IMPORT a class. See here for the gory details. I swear, in my opinion, this was a terrible move on Bukkit's (not just Spigot's) side. Practically breaks EVERY SINGLE PLUGIN which EVER used MC code. Hoorah.

    I could use reflection to check if the class exists in the first place, and use a dynamic class, and reflection simply to get it, but that would be extremely hacky.
     
  2. Offline

    xXSniperzzXx_SD

    I heard, about this, and this is definitely gonna go south, so many server owners, and devs will hate this...
    And i know that it's not good but couldn't we just
    Code:
    import net.minecraft.server.*;
    I never did understand why people always went against doing this
    yes, it imports all of it, but it will fix this
     
  3. Offline

    xGhOsTkiLLeRx

    Still works great :)
     
  4. Offline

    Icyene

    ErrorLogger 3.0.0 is now available!

    This features a complete rewrite of the logger to make it faster and more predictable. Issues fixed include:

    • Errors/logs being suppressed
    • Plugins overwriting their caches
    • Random exceptions
    EL now uses JSON to store the HashMaps of registered plugins, and this results in cleaner, easier to maintain code. The structure in which it logs messages has also been changed to not spam the console.

    This is an example of the new EL console log functioning on a dummy error from one of my plugins:

    Log (open)

    Code:
    13:25:54 [SEVERE]
    Storm encountered an error:
     
    java.lang.RuntimeException: Test!
        at com.github.StormTeam.Storm.Storm.onEnable(Storm.java:110)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
        at org.bukkit.craftbukkit.v1_4_R1.CraftServer.loadPlugin(CraftServer.java:282)
        at org.bukkit.craftbukkit.v1_4_R1.CraftServer.enablePlugins(CraftServer.java:264)
        at net.minecraft.server.v1_4_R1.MinecraftServer.j(MinecraftServer.java:321)
        at net.minecraft.server.v1_4_R1.MinecraftServer.e(MinecraftServer.java:300)
        at net.minecraft.server.v1_4_R1.MinecraftServer.a(MinecraftServer.java:259)
        at net.minecraft.server.v1_4_R1.DedicatedServer.init(DedicatedServer.java:149)
        at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:399)
        at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)
     
    13:25:54 [SEVERE] Don't despair! This error has been saved to '.\Storm\errors\RuntimeException_233223.error.log'. You should report it to the developers of Storm: [Icyene, Xiaomao, Thidox].
    


    And the saved file:

    File (open)

    Code:
    ---- Minecraft Crash Report ----
    // On the bright side, I bought you a teddy bear!
     
    Time: 31/01/13 12:42 PM
    Description: Storm encountered an error!
     
    java.lang.RuntimeException: Test!
        at com.github.StormTeam.Storm.Storm.onEnable(Storm.java:110)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
        at org.bukkit.craftbukkit.v1_4_R1.CraftServer.loadPlugin(CraftServer.java:282)
        at org.bukkit.craftbukkit.v1_4_R1.CraftServer.enablePlugins(CraftServer.java:264)
        at net.minecraft.server.v1_4_R1.MinecraftServer.j(MinecraftServer.java:321)
        at net.minecraft.server.v1_4_R1.MinecraftServer.e(MinecraftServer.java:300)
        at net.minecraft.server.v1_4_R1.MinecraftServer.a(MinecraftServer.java:259)
        at net.minecraft.server.v1_4_R1.DedicatedServer.init(DedicatedServer.java:149)
        at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:399)
        at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)
     
     
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
     
    -- System Details --
    Details:
        Minecraft Version: 1.4.7
        Operating System: Windows XP (x86) version 5.1
        Java Version: 1.8.0-ea, Oracle Corporation
        Java VM Version: Java HotSpot(TM) Client VM (mixed mode), Oracle Corporation
        Memory: 430983816 bytes (411 MB) / 506855424 bytes (483 MB) up to 1037959168 bytes (989 MB)
        JVM Flags: 2 total; -Xmx1024M -Xms500M
        AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
        Suspicious classes: $Proxy3, $Proxy4, $Proxy6[com.avaje.ebean.EbeanServer], [com.avaje.ebean.config.dbplatform.DatabasePlatform, SQLitePlatform], [com.google.common.base.Predicate, Function, Joiner, ...], [com.google.common.cache.CacheLoader, SupplierToCacheLoader, FunctionToCacheLoader, ...], [com.google.common.collect.ImmutableCollection, ImmutableList, Maps, ...], [com.google.common.io.Files, InputSupplier, OutputSupplier, ...], [com.google.common.util.concurrent.UncheckedExecutionException], [net.minecraft.server.v1_4_R1.ICommandListener, IMojangStatistics, IDataManager, ...], [org.apache.commons.lang.Validate, UnhandledException, StringUtils, ...], [org.apache.commons.lang.exception.Nestable, NestableRuntimeException, ExceptionUtils], [org.bukkit.World, BlockChangeDelegate, Server, ...], [org.bukkit.block.BlockState, BlockFace, Block], [org.bukkit.command.CommandSender, RemoteConsoleCommandSender, CommandException, ...], [org.bukkit.command.defaults.VanillaCommand, SaveCommand, SaveOnCommand, ...], [org.bukkit.configuration.ConfigurationSection, Configuration, MemorySection, ...], [org.bukkit.configuration.file.FileConfiguration, YamlConfiguration, FileConfigurationOptions, ...], [org.bukkit.configuration.serialization.ConfigurationSerializable, ConfigurationSerialization, DelegateDeserialization, ...], [org.bukkit.conversations.Conversable, ConversationCanceller], [org.bukkit.craftbukkit.Main], [org.bukkit.craftbukkit.libs.com.google.gson.JsonDeserializer, JsonParseException, GsonBuilder, ...], [org.bukkit.craftbukkit.libs.com.google.gson.annotations.SerializedName], [org.bukkit.craftbukkit.libs.com.google.gson.internal.Excluder, $Gson$Preconditions, Primitives, ...], [org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.JsonTreeReader, JsonTreeWriter, BigDecimalTypeAdapter, ...], [org.bukkit.craftbukkit.libs.com.google.gson.reflect.TypeToken], [org.bukkit.craftbukkit.libs.com.google.gson.stream.JsonReader, JsonWriter, MalformedJsonException, ...], [org.bukkit.craftbukkit.libs.jline.TerminalFactory, Terminal, Flavor, ...], [org.bukkit.craftbukkit.libs.jline.console.ConsoleReader, CursorBuffer, ConsoleKeys, ...], [org.bukkit.craftbukkit.libs.jline.console.completer.CompletionHandler, CandidateListCompletionHandler], [org.bukkit.craftbukkit.libs.jline.console.history.History, MemoryHistory], [org.bukkit.craftbukkit.libs.jline.internal.InputStreamReader, Configuration, Log], [org.bukkit.craftbukkit.libs.joptsimple.OptionException, OptionParser, OptionSpec, ...], [org.bukkit.craftbukkit.libs.joptsimple.internal.AbbreviationMap, ReflectionException, Reflection, ...], [org.bukkit.craftbukkit.v1_4_R1.LoggerOutputStream, CraftServer, CraftOfflinePlayer, ...], [org.bukkit.craftbukkit.v1_4_R1.command.ServerCommandSender, CraftConsoleCommandSender, ColouredConsoleSender], [org.bukkit.craftbukkit.v1_4_R1.conversations.ConversationTracker], [org.bukkit.craftbukkit.v1_4_R1.enchantments.CraftEnchantment], [org.bukkit.craftbukkit.v1_4_R1.entity.CraftEntity, CraftLivingEntity, CraftHumanEntity, ...], [org.bukkit.craftbukkit.v1_4_R1.generator.InternalChunkGenerator, CustomChunkGenerator, NormalChunkGenerator, ...], [org.bukkit.craftbukkit.v1_4_R1.help.SimpleHelpMap, CommandAliasHelpTopic, HelpYamlReader, ...], [org.bukkit.craftbukkit.v1_4_R1.inventory.CraftItemStack, CraftRecipe, CraftShapedRecipe, ...], [org.bukkit.craftbukkit.v1_4_R1.metadata.EntityMetadataStore, PlayerMetadataStore, WorldMetadataStore, ...], [org.bukkit.craftbukkit.v1_4_R1.potion.CraftPotionEffectType, CraftPotionBrewer], [org.bukkit.craftbukkit.v1_4_R1.scheduler.CraftScheduler, CraftTask, CraftAsyncTask, ...], [org.bukkit.craftbukkit.v1_4_R1.updater.AutoUpdater, BukkitDLUpdaterService, DateDeserializer, ...], [org.bukkit.craftbukkit.v1_4_R1.util.Waitable, ServerShutdownThread, TerminalConsoleHandler, ...], [org.bukkit.enchantments.Enchantment, EnchantmentWrapper], [org.bukkit.entity.Entity, Damageable, LivingEntity, ...], [org.bukkit.event.Event, Cancellable, Listener, ...], [org.bukkit.event.block.BlockEvent, BlockFadeEvent, BlockGrowEvent, ...], [org.bukkit.event.entity.EntityEvent, EntityInteractEvent, EntityDamageEvent, ...], [org.bukkit.event.hanging.HangingEvent, HangingPlaceEvent], [org.bukkit.event.inventory.InventoryEvent, InventoryCloseEvent, InventoryClickEvent, ...], [org.bukkit.event.painting.PaintingEvent, PaintingPlaceEvent, PaintingBreakEvent, ...], [org.bukkit.event.player.PlayerEvent, PlayerInteractEvent, PlayerFishEvent, ...], [org.bukkit.event.server.ServerEvent, MapInitializeEvent, ServerCommandEvent, ...], [org.bukkit.event.vehicle.VehicleEvent, VehicleExitEvent, VehicleEnterEvent, ...], [org.bukkit.event.weather.WeatherEvent, ThunderChangeEvent, WeatherChangeEvent, ...], [org.bukkit.event.world.WorldEvent, WorldSaveEvent, WorldInitEvent, ...], [org.bukkit.generator.ChunkGenerator], [org.bukkit.help.HelpMap, HelpTopic, IndexHelpTopic, ...], [org.bukkit.inventory.ItemStack, Recipe, ShapedRecipe, ...], [org.bukkit.inventory.meta.ItemMeta, Repairable, BookMeta, ...], [org.bukkit.map.MapView], [org.bukkit.material.MaterialData, Tree, Directional, ...], [org.bukkit.metadata.Metadatable, MetadataStore, MetadataStoreBase], [org.bukkit.permissions.ServerOperator, Permissible, PermissionDefault, ...], [org.bukkit.plugin.ServicesManager, PluginManager, SimpleServicesManager, ...], [org.bukkit.plugin.java.JavaPluginLoader, PluginClassLoader, JavaPlugin], [org.bukkit.plugin.messaging.PluginMessageRecipient, Messenger, StandardMessenger, ...], [org.bukkit.potion.PotionEffectType, PotionEffectTypeWrapper, PotionBrewer, ...], [org.bukkit.scheduler.BukkitScheduler, BukkitTask], [org.bukkit.util.Vector, BlockVector, Java15Compat, ...], [org.fusesource.hawtjni.runtime.Library], [org.fusesource.jansi.AnsiOutputStream, WindowsAnsiOutputStream, AnsiConsole, ...], [org.fusesource.jansi.internal.Kernel32, CONSOLE_SCREEN_BUFFER_INFO, COORD, ...], [org.yaml.snakeyaml.DumperOptions, ScalarStyle, FlowStyle, ...], [org.yaml.snakeyaml.composer.Composer, ComposerException], [org.yaml.snakeyaml.constructor.BaseConstructor, SafeConstructor, Constructor, ...], [org.yaml.snakeyaml.emitter.Emitable, Emitter, EmitterState, ...], [org.yaml.snakeyaml.error.YAMLException, MarkedYAMLException, Mark], [org.yaml.snakeyaml.events.Event, NodeEvent, AliasEvent, ...], [org.yaml.snakeyaml.external.com.google.gdata.util.common.base.Escaper, UnicodeEscaper, PercentEscaper], [org.yaml.snakeyaml.introspector.PropertyUtils, BeanAccess], [org.yaml.snakeyaml.nodes.Node, CollectionNode, MappingNode, ...], [org.yaml.snakeyaml.parser.Parser, ParserImpl, ParserException, ...], [org.yaml.snakeyaml.reader.UnicodeReader, StreamReader, ReaderException], [org.yaml.snakeyaml.representer.BaseRepresenter, SafeRepresenter, Representer, ...], [org.yaml.snakeyaml.resolver.Resolver, ResolverTuple], [org.yaml.snakeyaml.scanner.Scanner, ScannerImpl, ScannerException, ...], [org.yaml.snakeyaml.serializer.Serializer, SerializerException], [org.yaml.snakeyaml.tokens.Token, AliasToken, ScalarToken, ...], [org.yaml.snakeyaml.util.UriEncoder, ArrayStack]
        IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
        CraftBukkit Information:
      Running: CraftBukkit version git-Bukkit-1.4.7-R1.0-b2624jnks (MC: 1.4.7) (Implementing API version 1.4.7-R1.0) false
      Plugins: { Essentials v2.9.2 com.earth2me.essentials.Essentials [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, md_5, Iaccidentally], Storm v0.1.2B com.github.StormTeam.Storm.Storm [Icyene, Xiaomao, Thidox], PokeSlime v1.2 de.V10lator.PokeSlime.PokeSlime [], PortalStick v3.0.0 com.matejdro.bukkit.portalstick.PortalStick [matejdro and oliverw92 and Dralletje],}
      Warnings: DEFAULT
      Threads: { RUNNABLE Listen thread: [java.net.TwoStacksPlainSocketImpl.socketAccept(Native Method), java.net.AbstractPlainSocketImpl.accept(Unknown Source), java.net.PlainSocketImpl.accept(Unknown Source), java.net.ServerSocket.implAccept(Unknown Source), java.net.ServerSocket.accept(Unknown Source), net.minecraft.server.v1_4_R1.DedicatedServerConnectionThread.run(DedicatedServerConnectionThread.java:62)], RUNNABLE Signal Dispatcher: [], RUNNABLE Attach Listener: [], WAITING Snooper Timer: [java.lang.Object.wait(Native Method), java.lang.Object.wait(Object.java:502), java.util.TimerThread.mainLoop(Unknown Source), java.util.TimerThread.run(Unknown Source)], RUNNABLE Server thread: [java.lang.Thread.dumpThreads(Native Method), java.lang.Thread.getAllStackTraces(Unknown Source), org.bukkit.craftbukkit.v1_4_R1.CraftCrashReport.call(CraftCrashReport.java:28), net.minecraft.server.v1_4_R1.CrashReportSystemDetails.a(SourceFile:74), net.minecraft.server.v1_4_R1.CrashReport.h(CrashReport.java:43), net.minecraft.server.v1_4_R1.CrashReport.<init>(CrashReport.java:30), com.github.StormTeam.Storm.ErrorLogger.generateErrorLog(ErrorLogger.java:109), com.github.StormTeam.Storm.ErrorLogger.log(ErrorLogger.java:44), java.util.logging.Logger.doLog(Unknown Source), java.util.logging.Logger.log(Unknown Source), org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:459), org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381), org.bukkit.craftbukkit.v1_4_R1.CraftServer.loadPlugin(CraftServer.java:282), org.bukkit.craftbukkit.v1_4_R1.CraftServer.enablePlugins(CraftServer.java:264), net.minecraft.server.v1_4_R1.MinecraftServer.j(MinecraftServer.java:321), net.minecraft.server.v1_4_R1.MinecraftServer.e(MinecraftServer.java:300), net.minecraft.server.v1_4_R1.MinecraftServer.a(MinecraftServer.java:259), net.minecraft.server.v1_4_R1.DedicatedServer.init(DedicatedServer.java:149), net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:399), net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)], RUNNABLE DestroyJavaVM: [], RUNNABLE Thread-5: [org.fusesource.jansi.internal.Kernel32._getch(Native Method), org.fusesource.jansi.internal.WindowsSupport.readByte(WindowsSupport.java:46), org.bukkit.craftbukkit.libs.jline.WindowsTerminal.readByte(WindowsTerminal.java:184), org.bukkit.craftbukkit.libs.jline.WindowsTerminal.access$000(WindowsTerminal.java:53), org.bukkit.craftbukkit.libs.jline.WindowsTerminal$1.read(WindowsTerminal.java:151), java.io.FilterInputStream.read(Unknown Source), org.bukkit.craftbukkit.libs.jline.console.ConsoleReader$1.read(ConsoleReader.java:167), org.bukkit.craftbukkit.libs.jline.internal.InputStreamReader.read(InputStreamReader.java:267), org.bukkit.craftbukkit.libs.jline.internal.InputStreamReader.read(InputStreamReader.java:204), org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readCharacter(ConsoleReader.java:995), org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLine(ConsoleReader.java:1167), net.minecraft.server.v1_4_R1.ThreadCommandReader.run(ThreadCommandReader.java:31)], TIMED_WAITING Thread-4: [java.lang.Thread.sleep(Native Method), net.minecraft.server.v1_4_R1.ThreadSleepForever.run(SourceFile:52)], WAITING Reference Handler: [java.lang.Object.wait(Native Method), java.lang.Object.wait(Object.java:502), java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)], WAITING Finalizer: [java.lang.Object.wait(Native Method), java.lang.ref.ReferenceQueue.remove(Unknown Source), java.lang.ref.ReferenceQueue.remove(Unknown Source), java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)], TIMED_WAITING Keep-Alive-Timer: [java.lang.Thread.sleep(Native Method), sun.net.www.http.KeepAliveCache.run(Unknown Source), java.lang.Thread.run(Unknown Source)],}
      Recent tasks from -31--1{}
    


    Note that the version saved in the file contains a more comprehensive list of data. I achieved this by piggybacking on MC's error logging, and simply calling it up for plugin errors.

    The result? Much better logs, smaller size, and better performance.

    However, this does not come without caveats. The logger now only accepts a package and a plugin name, nothing else. The ticket tracker field has been removed for serialization issues. Also note that this will continue to break every MC build: I plan on fixing this in the near future.
     
  5. Offline

    xXSniperzzXx_SD

  6. Offline

    xGhOsTkiLLeRx

    Have you tried updating?
    (I know, timzones, friday evening, normal life, etc ;) )

    Since the "log" variable is not anymore in the MinecraftServer class.
    Instead they use "public abstract IConsoleLogManager getLogger();"

    Second problem:

    report.a() requests now a second object: IConsoleLogManager iconsolelogmanager

    CraftServer still uses the "console" field, so you can update just that import :)

    Sources:
    https://github.com/Bukkit/CraftBukk...va/net/minecraft/server/CrashReport.java#L133
    https://github.com/Bukkit/CraftBukk...t/minecraft/server/MinecraftServer.java#L1182

    Would be more than awesome if you can update this.
    I wont rush (like some users, do -.-")
    For now, I leave it out of SilkSpawners, so take your time and if you could get this to work, kudos to you!

    Thanks in advance and best regards!
     
  7. Offline

    xGhOsTkiLLeRx

  8. Offline

    iTidez

    I would care for an update myself, I use this in all of the custom plugins I make so any problems I have I can see it, and fix it fast!

    EDIT: After doing some basic poking around to see what would work. I have come up with some basic code that works to a degree. Until its updated officially, you may use this line for the report.a(); line

    Code:java
    1. report.a(dump, MinecraftServer.getServer().getLogger());
     
  9. Offline

    xXSniperzzXx_SD

    Icyene Any chance of an update? Because I would REALLY love to use this again...
     
  10. Offline

    lucasdidur

    Still works in 1.7.9?
     
Thread Status:
Not open for further replies.

Share This Page