Skip to content

Releases: Burloe/GDLogger

GDLogger 2.0 - New name, new look

Choose a tag to compare

@Burloe Burloe released this 19 Oct 00:13
49a0907

Introducing GDLogger - GoLogger reworked and redesigned.

gologger_web_icon_shadow

GDLogger has gotten a much needed facelift with a sleeker, simple, more uniform and professional appearance. The visuals are not the only improvements. While the core design of using categories to sort your important logs is still very much the same. Stripped of superfluous features and made into a much more concise and all around easier user experience.

GDLogger.mp4

Renaming motivation

Around the time version 1.2 was under development, I found that there was an already existing logging tool for the Go programming language with the name GoLogger. Since then, a name change have been considered and deliberated heavily, and with this new 2.0 rework and with GD being an established Godot specific term and close to the old name and . The time has come to finally rip the Bandaid off.



Logs Tab

Category tab -> Logs tab:

The Category tab has been reworked into featuring not only Categories as before, but you can now view your GDLogger files within the dock and even open and read them! Using the CheckBox in the side panel, you can choose whether to open log files within the editor as a Popup window, or using an external program like Notepad++.

Use the left/right arrow buttons below a category to either move and sort your categories(this is purely visual and doesn't change anything), or press the down arrow to open that category's .log files.

Default Category:

Additionally, while it's very nice to have categories to sort log entries. Often you have one overarching category like Game or General that takes entries from all over the place. Or perhaps you simply use one singular category and you don't feel like having to specify the category every time you call msg(). By checking the CheckBox next to the category name, you select that category as the default category and whenever you call msg() without defining the category_name parameter, the entry is logged into the default category.

Integrated Log Viewer

A new in-editor log viewer allows you to now see and open log files without ever having to leave the editor. You can customize the text as well and copy the contents to clipboard. If desired, you are also able to turn off Open filed in editor setting which instead opens the log file using the default application of your operating system(such as Notepad++).
image

Changed to resource-based plugin data/settings

Instead of saving plugin data in a .ini, .json or .cfg file. A resource-based solution has been implemented. This was changed for a variety of reasons, mainly due to storing, loading and handling data within a custom resource is much easier to handle and requires a lot less lines of code. The GLData resource is saved in each project directory and if you run into issues, you can easily open the resource in Godot and manually fix any issues. This change also enabled support for hot-swapping settings mid-session.

While the debate regarding the security of resource-based saving is endless. The simple fact is that no sensitive data stored in the resource and the upsides outweigh any potential downsides.

BREAKING CHANGE - Log.entry() is now Log.msg() and more

msg(log_msg : String, category_name: String = "", print_entry: bool = false)

Log.msg("NEW way of specifying categories.", "game")
Log.msg("NEW way of logging to designated Default Category.") # Not defining category name logs msg to Default Category

Log.entry("OLD way of specifying categories.", 0)
  • Log.entry() is now Log.msg(). This was done because the convention of other logging plugins and systems typically use 'msg', but also because it's easier, more comfortable to type and is shorter.
  • Category indices have been removed entirely in favor of specifying the category by name. This change was motivated by the fact that indices meant you had to remember/check which category had what index, which is very obtuse and frustrating. Instead, you now simply specify the category by name instead. Not specifying a category_name will log the msg to the default category(see paragraph below for more info).
  • print_entry can be used to print individual entries to Output.

This means existing Log.entry() calls are now broken when you update but it is easy to fix. Simply use 'Search and Replace' to correct this.



BREAKING CHANGE - Save Copy feature removed

The after careful deliberation, the Save Copy feature has been removed. While it does have its uses, it's ultimately too niche to justify the significant development and debugging time involved when a new update is being developed. It's core behavior can be somewhat replicated manually by using the hotkeys to restart a session.



Proper support for running multiple instances at once

Many thanks to @abderrahman504 with #25 for bringing attention to the fact that there's no way to differentiate between entries from multiple instances, as is often the case when debugging/testing multiplayer projects.

A new instance_id has been implemented. Each instance of your project will generate a random 5 character ID(much like UIDs) that you can use to mark entries with(see Customizable Log Header and Entry Formats section for more info on tags).

The instance_id can be shown in the viewport using the Display Instance ID(Ctrl + Shift + I). You are also able to change the visibility behavior of the instance_id. You have many options to customize the size, position and colors so the text is visible and doesn't block anything in your games.

image


Fully customizable log header and entry formats

You can now completely customize the format of both the log header and entries using tags. You can put any kind of string along with some tags to format the date and time stamps exactly how you want.

image
{category} - Category name is only available for Log Header
{entry} - The entry string, only available for Entry Format and IS REQUIRED
{instance_id} - Only available for Entry Format
{project_name} {version} - Project name and version fetched from ProjectSettings
{yy} {mm} {dd} - Year, month and day
{hh} {mi} {ss} - Hour, minute and seconds




Dock follows theme colors

The dock



Changelog:

  • Name changed to GDLogger from GoLogger
  • Resource-based saving of plugin data/settings.
  • Changes to Log.entry() -> Log.msg(log_entry: String, category_name: String = "", print_entry: bool = false)
    • Specifying the category by category_index has been replaced with category_name string.
    • print_entry allows you to optionally print individual entries.
  • Default category is a checkbox you can mark a category as. When a category_name isn't passed in when calling Log.entry(). The default category is then used.
  • #25 Instance ID system implemented to support for multiple instances running simultaneously.
    • Use Ctrl + Shift + I to display the ID of an instance(you can optionally print the ID to output with the hotkey as well).
    • `ID Overlay settings allows you to customize the look of the overlay text.
  • snake_case and _ for spaces are enforced for category names.
  • New settings to allow you to customize the format of Log Header and Entry Format. Allowing you to set custom strings and format date- and timestamps to your preference/region.
  • Sleeker, cleaner and more uniform look across the board.
  • Hotkey resources has been consolidated into one and can be edited in the Settings tab.
  • In-dock help section has been improved and rewritten to be more concise and neutral.
  • Removed or changed superfluous features:
    • Signals session_started/ended consolidated into one session_toggled(toggled_on: bool) signal
    • Signals session_timer_started/ended - The session_toggled signal already serves the same purpose.
    • 'Save Copy' feature
    • Lock category button
    • Error reporting level setting

1.3.1

Choose a tag to compare

@Burloe Burloe released this 06 May 08:15

Didn't plan on releasing an update a week after the 1.3 release but I've recently had the opportunity to try out GoLogger on more devices and found issues in the settings tab. This update doesn't bring any additional features, only improvements to the dock.
image

A new Help tab has been added, containing a very condensed version of the Wiki documentation. This was added with the aim of giving users the bare essentials info on how to use the plugin without the need of going outside of Godot to read the documentation. Feel free to post feedback if you feel there's some info missing.
image

  • Settings tab has been entirely remade
  • Fixed tooltip issues
  • Fixed ScrollContainer not working horizontally
  • Added a new "Help" tab

1.3.0

Choose a tag to compare

@Burloe Burloe released this 25 Apr 20:55
fe3f9b8

Update 1.3 is here!

Apologies for the messy release. Github decided to use a very old commit as the release for some reason and was forced to redo the release. This should now be fixed.

Please excuse the long period between updates. There hasn't been many any major planned features that warranted a new update. Instead of cluttering the plugin with features that might be useful to a very small minority, Instead focusing on adding features that are truly lacking in the current tool set or improve/fix what's already there. With this in mind, some of the more superfluous settings and features have been stripped. Like printing to output on session status change.

This update brings some much needed improvements with regards to the user experience and look of the plugin. Some minor issues have been resolved and improvements have been made to the codebase as well. One major pet-peeve of mine has been resolved. That being 'Unsaved changes' being prompted when opening a project. The Log autoload is added, which triggered a change in the project. Requiring save/discard to exit or reload Godot. Simply moving the add_autoload_singleton() call to the _enable_plugin() method fixed this entirely.

Cleaner visuals

Instead of color coding many of the elements and text inside the dock. We now have a much sleeker, less cluttered and unified look to the dock. These changes uses the default editor theme and should conform to your base and accent colors.

We also have proper tooltips when you mouse over elements in the dock which meant we could delete the info panel. A column slider was also added to the Categories tab so you can set the number of horizontal categories that are visible for your screen resolution/scaling.
ColumnSliderShowcase

Manual control of category index

The category index can now be changed in the dock! Previously, you had to delete some or all categories and re-enter them in the order you wanted to set the index to your preference. You now have full control, without the need of hacky workarounds. When adding, deleting or changing the index. The plugin will also automatically update the index of all categories to numerical zero, one, two, three order.
CatIndexShowcase

You can now call save_copy in your code

Thesave_copy() feature could only be manually triggered at runtime using hotkeys and required you to enter a name(which still works the same). However, you can now simply call the save_copy() function in your code! This allows you to preemptively set its name and when to trigger in the cases you desire.

Changelog:

  • Cleaner visuals and theme.
  • #20 'Unsaved changes' problem fixed.
  • #19 You can now call Log.save_copy("my_copy") through code. Bypassing the popup and giving you control to setup save copy automatically.
  • #18 The category index can be manually changed in the 'Categories' tab! The index is is now numerically ordered automatically.
  • Column slider allows you to set the number of columns visible in the GridContainer holding the categories.
  • Proper tooltips have been added that shows on mouse over which de-clutters the dock massively.
  • Removed excessive settings.
  • Full Changelog: 1.2.2...1.3.0

1.2.2 - Fix for Mac and Linux users

Choose a tag to compare

@Burloe Burloe released this 05 Feb 18:27
70e7a17

As reported in #16, a Windows-specific path was used to store logs in absolute directory paths which broke the plugin on Mac and Linux. This update only contains this fix and isn't required for Windows users. The Asset Library will be updated in the coming days as well.

Special thanks to @rfbarraza for reporting the issue and credit goes entirely to him for the solution! 🎉

1.2.1 Maintenance Update - 4.4 beta

Choose a tag to compare

@Burloe Burloe released this 17 Jan 18:00
1ae5461

Hello!

With the new 4.4 beta, releasing a minor maintenance update was pertinent to resolve #14 and some of the alignment issues for the dock that came up when updating. This update is live on the main branch!

The problem was caused due to duplicate icon files that had the same UID's and only affects some users.
404233503-868f8114-b1f6-4c2a-b44a-cdbadbbd7c9b
This only caused Godot to throw these annoying warnings about duplicate UID's for some users and doesn't break anything. Meaning this update is strictly optional and only recommended to update if you're using 4.4(beta).

What's Changed

  • Fix #14
  • Positional changes to dock elements to align the labels in each column

Full Changelog: 1.2...1.2.1

GoLogger v1.2 Released!

Choose a tag to compare

@Burloe Burloe released this 20 Nov 22:49

GoLogger_Icon_Title New Icon!

This update includes a major rewrite of the plugin, with significant changes that have added, removed or replaced features. The two main additions in update is the new Category system and Dock Panel, which allows users to manage log categories, change settings and tailor the plugin to your needs, all in one, easily accessibly panel. This new dock has the integrated Category system that allows users to easily add, rename, and delete log categories.

This update has expanded the code base considerably compared to previous versions, changing the plugin from a basic framework that required code modifications to make any meaningful changes, into a more feature-rich standalone tool. It's now designed to be code-free, user-friendly, and accessible for beginners. However, with more moving parts comes more potential points of failure. That's why I'm holding off on updating the Asset Library plugin to see if any bug reports or installation issues comes up. Please create an issue if you experience any issues!

Note that unfortunately, this update doesn't work on 4.2 and below!

TLDR Changelist:

  • GoLogger Dock - Category management and settings are now accessible inside a dock panel instead of requiring you to open a scene and change settings in the inspector. Category tab also has some basic monitoring of the last active session.
  • Category system - Overhauled this process completely. You add more categories now using the dock which makes the process completely code-free.
  • Save copies of the active session - *You can at anytime save a copy of the active session into a separate file, stored in a subfolder, which excludes the file from being deleted.
  • Hotkeys - You can now control sessions with hotkeys. Start Ctrl + Shift + O, copy Ctrl + Shift + U, stop Ctrl + Shift + P, controller toggle Ctrl + Shift + K.
  • Directories and folders - Instead of defining each directory manually. You now enter a base directory and GoLogger will create folders for each category inside of it.
  • Controller removed - * With the addition of hotkeys, the controller was left redundant and considering the new additions in this update, superfluous features was cut.

GoLogger Dock:

The dock panel is a new addition to the bottom dock, consolidating all plugin settings and category management in one place. This enhancement removes the need to open a scene file to change settings, aiming for a more efficient and user-friendly experience, significantly improving the ease of use of the plugin compared to previous releases.

GoLoggerSettingsDock

Log Category System:

In earlier versions, adding log categories required users to navigate the code and copy-paste sections to add additional categories. A workaround that never fit with GoLogger’s drag-and-drop design. This update introduces a more user-friendly solution with the addition of the new Category system.

New categories can now be created entirely through the dock's "Category" tab in the editor, with no code changes required. You can rename, add, or delete categories freely, and the plugin will generate folders for each category at runtime. The base directory is created whenever settings are updated, and the plugin includes two default categories: "game" and "player."
GoLoggerCategoryDock

Save copies of the active session:

You can now save a "session copy" of the active session by pressing the hotkey. This will bring up a popup prompt that requires you to specify a name. Once done, a copy is saved inside the category's "saved_logs" subfolder. The name you enter will be timestamped automatically and doesn't require you to add ".log" either.

While the popup prompt is displayed, any limit method is paused from triggering while still allowing entries to be logged. Meaning the SessionTimer is paused, Entry Count won't be triggered. For this reason, the prompt has a timer that cancels the action after 30 seconds of inaction.
GoLoggerCopySession

Hotkeys:

Gologger now supports hotkeys for all major actions, allowing users to manage sessions without additional runtime code. Currently InputEventShortcut resources must be manually located and modified to change the hotkeys. The aim was to find a dock-integrated rebinding feature, similar to using exported InputEventShortcuts. It would entail creating an entire rebind system which was entirely beyond the scope of the plugin for such a minor feature. Another method would be to utilize InputMap actions and bindings but it would arguably be the same process(more or less) with the additional crowding of the InputMap. Feedback and suggestions are welcome on the subject!

Default hotkeys are:

  • Ctrl + Shift + O - Start session
  • Ctrl + Shift + P - Stop session
  • Ctrl + Shift + U - Save copy of current session

Joypad bindings are also supported(just add them to the shortcut resources) but wasn't added by default as to not conflict with any game controls.

Directories and folders:

Instead of manually specifying directories for each log category in the code, you now set the "base directory" using the "Settings" tab of the dock. GoLogger creates folders for each category within the base directory, along with a "saved_logs" folder inside each category to store session copies and protect them from deletion.
GoLoggerDirectories
settings.ini is always stored in user://GoLogger/, regardless of the base_directory setting.

Controller removed:

With the additions of the hotkeys, the controller brought very little value and as such, it was removed. The scale of GoLogger has been increased with this update and because of that, features that provide little return had to be cut. Considering the additions of hotkeys, the controller would never be as simple and quick as a simple button-press. However, if this is something you'd want, creating one that fits your existing UI is as simple as it gets and will yield a better result. Simply add buttons that calls the main plugin methods(start_session(), save_copy() and stop_session()) in the button_up() signals.

Other changes:

  • Settings are now stored in a settings.ini file that's stored inside user://GoLogger/.
  • New settings have been added and some existing ones have been changed/reworked.
  • UTC time and timestamping log entries are now plugin-wide settings which are applied globally rather than having to specify its parameter in every start/stop/entry function call.

GoLogger v1.1 Release

Choose a tag to compare

@Burloe Burloe released this 21 Oct 16:44

New update brings many changes to the plugin. Much of the code was rewritten or reworked to make the backend work a lot better. While these changes might not be apparent to users, it's more robust and should be easier to setup.

  • Log.gd changed from having static functions to solely rely on being an autoload in order to call the functions from anywhere.
  • GoLogger.gd was merged into Log.gd.
  • start_session() can now be called with a delay timer. However, to use it, you need to use "await" when calling the function await start_session(1.0).
  • GoLoggerController is now an instantiable object that users can optionally instantiate into their existing UI rather than including it into the autoloaded scene which didn't work as intended. Previously, was always included but you simply toggled its visibility but now it's fully optional.
  • GoLoggerController now has an InputEventShortcut resource exported to easily rebind the toggle key and supports joypad bindings.
  • Changes to the default values. The previous settings were ridiculously low.
  • Added, removed and fixed settings, variables and signals.
  • Added an exported variable to specifically turn off warning as shown below.
    image
  • Fixed outdated and/or incorrect code documentation.
  • Updates to the README to make it more approachable and help with legibility(hopefully 🤞).

Full Changelog: 1.0.1...1.1

GoLogger v1.0.1 - Maintenance update

Choose a tag to compare

@Burloe Burloe released this 11 Oct 15:55

Mainly a maintenance update to fix some issues and inconsistencies. More options to customize what and if you want GoLogger to push errors and warnings.

  • Fixed some basic issues overlooked in 1.0.0 release.
  • Instead of a binary on/off option for GoLogger to push errors and warnings. Now you can choose to push either errors or warnings, or none.
  • UTC was turned off by default. Now using the local time when timestamping log entries. Note that UTC can still be used.

Full Changelog: 1.0.0...1.0.1

GoLogger v1.0.0 Release

Choose a tag to compare

@Burloe Burloe released this 21 Sep 16:01

This is version 1.0.0 which will(hopefully) be released on the Godot asset library. Please refer to the README on how to install and use GoLogger.