# Kindling - a collection of tools to help with Ignition

**URL:** <https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689>\
**Category:** Ignition\
**Created:** [January 5, 2022, 5:01pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689 "2022-01-05T17:01:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [January 5, 2022, 5:01pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/1 "2022-01-05T17:01:36Z")

</div>

Happy new year, and all that! I wanted to debut for the community something I've been working on for a little while, and hopefully it's useful to somebody out there.  
The full story: Long ago I worked as a support rep at IA. While there, I made some tools for internal use; Vision windows attached to an internal gateway that knew how to parse our log IDB files and thread dump files and display them in a more useful way. Recently, I had some downtime, and wanted to take on a new project, so I recreated those tools as a standalone project. Thanks to some modern Java features, I'm able to package those tools into a standalone "native" executable, which should make them a lot more accessible than requiring an Ignition gateway.

So, here's [Kindling](https://github.com/inductiveautomation/kindling), a collection of tools to help with Ignition (get it?):

- A thread dump viewer
- A log file viewer
- A store & forward cache dump viewer
- An archive explorer that understands Ignition project files, gateway backups, modules, and more

And not to bury the lede, but it also comes with dark mode 🙂

The best part: It's entirely open-source, and I'd love community contributions.

# TL;DR:

> **[GitHub - inductiveautomation/kindling: A standalone collection of utilities to help...](https://github.com/inductiveautomation/kindling)**
>
> A standalone collection of utilities to help Ignition users. Features various tools to help work with Ignition's custom data export formats.

# I just want the download:

> **[Kindling](https://inductiveautomation.github.io/kindling/download.html)**

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 5, 2022, 5:10pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/2 "2022-01-05T17:10:28Z")

</div>

I guess I should learn Kotlin. /:

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [January 5, 2022, 5:15pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/3 "2022-01-05T17:15:41Z")

</div>

If you squint hard enough, Kotlin kinda lands between Jython and Java - all the benefits of static typing but with less syntactic ceremony.

Plus, null-safety in the type system is _fantastic_.

---

<div class="post-metadata">

**Author:** ![mmunin](https://avatars.discourse-cdn.com/v4/letter/m/c0e974/32.png) [@mmunin](https://forum.inductiveautomation.com/u/mmunin)\
**Post date:** [January 5, 2022, 5:31pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/4 "2022-01-05T17:31:55Z")

</div>

This is fantastic thanks so much! I think being able to perform some operations on config.idb without the gateway running and without dealing with sqlite syntax would be really nice too. Examples that comes to mind include being able to delete all the tags from a gwbk, global find/replace operations, etc.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [January 5, 2022, 5:37pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/5 "2022-01-05T17:37:30Z")

</div>

Yeah, a .GWBK “explorer” or something is on my list of ideas; just needs fleshing out:

> <https://github.com/paul-griffith/kindling/issues/19>
>
> See what's in the GWBK, what version it came from, make changes?
> 
> Needs a comp…elling reason to exist.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [January 7, 2022, 12:58am UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/6 "2022-01-07T00:58:01Z")

</div>

v0.0.2:

> **[Release 0.0.2 - Add GWBK Viewer, Linux distribution · paul-griffith/kindling](https://github.com/paul-griffith/kindling/releases/tag/v0.0.2)**
>
> What's Changed
> 
> Fixed a bug with thread filtering: #21
> Optimized package size (~55mB, from ~120mB): #23
> Added initial Gateway backup "explorer": #22
> 
> Full Changelog: v0.0.1...v0.0.2

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [January 25, 2022, 7:19pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/7 "2022-01-25T19:19:39Z")

</div>

v0.0.3:

> **[Release 0.0.3 - Added generic IDB view · paul-griffith/kindling](https://github.com/paul-griffith/kindling/releases/tag/v0.0.3)**
>
> Added a generic IDB view. If the selected .idb file is not a system\_log file, you'll get a list of tables and a text area to enter arbitrary SQL in. Right click the tab to switch IDB viewer 'modes'...

Adds a generic IDB view:  
 ![](https://us1.discourse-cdn.com/inductiveautomation/original/3X/a/a/aa6d9ef72da65bc465a1465ddb288bf91f79b626.gif)  
Also accessible from GWBK view:  
 ![](https://us1.discourse-cdn.com/inductiveautomation/original/3X/a/c/acc9c04cdbe474f81a94b3234c5856d4ca7cebd1.gif)

---

<div class="post-metadata">

**Author:** ![hewking32](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@hewking32](https://forum.inductiveautomation.com/u/hewking32)\
**Post date:** [February 1, 2022, 2:14pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/8 "2022-02-01T14:14:06Z")

</div>

@paul-griffith thank you for Kindling - its a great tool.

1 Do you know of any other similar tools worth having to troubleshoot/monitor problems in ignitions ?  
2 Using Kindling i compared 2 gateways backups config files and would like to correct the difference in one of the files otherwise it will not launch designer or clients. Do you know if there is any way to do the change inside the gateway backup or is it write protected? I will not be able to correct the config file after deploying the backup because i dont have full server access.

Regards

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 1, 2022, 2:36pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/9 "2022-02-01T14:36:01Z")

</div>

Gateway backups are just zip files. Unzip, fix, rezip.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [February 1, 2022, 4:10pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/10 "2022-02-01T16:10:34Z")

</div>

Yeah, at some point I may make it possible to ‘live update’ a .gwbk or IDB, but for now read-only lets me make a lot of assumptions that make things easier.

---

<div class="post-metadata">

**Author:** ![hewking32](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@hewking32](https://forum.inductiveautomation.com/u/hewking32)\
**Post date:** [February 1, 2022, 5:08pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/11 "2022-02-01T17:08:22Z")

</div>

thank you for reply.  
if unzipping is the easiest method than i guess changing live is not needed in my opinion.

---

<div class="post-metadata">

**Author:** ![justin.brzozoski](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/justin.brzozoski/32/13452_2.png) [@justin.brzozoski](https://forum.inductiveautomation.com/u/justin.brzozoski)\
**Post date:** [February 1, 2022, 6:42pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/12 "2022-02-01T18:42:00Z")

</div>

I like what’s there and look forward to using it next time I need to pick apart logs. Something in the GUI library you used for the generic IDB viewer portion isn’t available on my system, though. ☹

```auto
WARNING: package com.sun.java.swing.plaf.windows not in java.desktop                 
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/sun/java/swing/plaf/windows/WindowsLookAndFeel

```

I’m running Mint (based off Ubuntu 20.04), and had to `git clone` your repo and do `gradlew run` locally, so this _may_ just be my setup. I don’t do Java/Kotlin/gradle packaging or building and am kinda lost on where to look in the project to figure this out. Searching online finds other people complaining that OpenJDK on Ubuntu is missing this bit and they ended up building JARs manually to get around it. ([here](https://stackoverflow.com/questions/62990097/openjdk-11-class-not-found-error-com-sun-java-swing-plaf-windows-windowslookand))

I feel like such a killjoy reporting a compatibility issue on a 1 month old project…

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [February 1, 2022, 6:46pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/13 "2022-02-01T18:46:01Z")

</div>

If it’s just an OpenJDK thing, you could try telling Gradle to use a different JDK vendor; in `build.gradle.kts` ~line 83, change this:  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/0/f/0f02e2fed29ba77e1565f84b08fb201f1fba3f05.png)

There’s a couple distributions you could try:  
[https://docs.gradle.org/current/javadoc/org/gradle/jvm/toolchain/JvmVendorSpec.html](https://docs.gradle.org/current/javadoc/org/gradle/jvm/toolchain/JvmVendorSpec.html)

Curious, does the `.rpm` in the releases tab not work for you? [Release 0.0.3 - Added generic IDB view · paul-griffith/kindling · GitHub](https://github.com/paul-griffith/kindling/releases/tag/v0.0.3)

---

<div class="post-metadata">

**Author:** ![justin.brzozoski](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/justin.brzozoski/32/13452_2.png) [@justin.brzozoski](https://forum.inductiveautomation.com/u/justin.brzozoski)\
**Post date:** [February 1, 2022, 7:46pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/14 "2022-02-01T19:46:19Z")

</div>

Switching from `ADOPTOPENJDK` to `AZUL` hits the same error. (I know it was using Azul since it gave me a “No compatible toolchains found” error until I installed Azul.)

I may try another JDK later when I have some more time.

I didn’t try the RPM since I’ve had bad experience with `alien` converting RPM to DEB in the past and don’t have native RPM tools installed on my system. I can try that later, too.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [February 3, 2022, 5:51pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/15 "2022-02-03T17:51:26Z")

</div>

v0.0.4 is out with dramatically improved usability (in my opinion) - to be honest, this is the first release I’d call actually useful 🙂 I need to update the gifs on the readme, but I’d definitely recommend giving this a try if you weren’t satisfied with things before.

> **[Release 0.0.4 - Improved filtering · paul-griffith/kindling](https://github.com/paul-griffith/kindling/releases/tag/v0.0.4)**
>
> What's Changed
> 
> Much improved log presentation, some IDB view cleanups: #31
> Much improved table filtering and UX: #32
> 
> Full Changelog: v0.0.3...v0.0.4

---

<div class="post-metadata">

**Author:** ![victordcq](https://avatars.discourse-cdn.com/v4/letter/v/f6c823/32.png) [@victordcq](https://forum.inductiveautomation.com/u/victordcq)\
**Post date:** [February 4, 2022, 9:45am UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/16 "2022-02-04T09:45:12Z")

</div>

I was gonna give it alook, downloaded the exe and installed it, but it is starting up very very slowly (like mulitple minutes) and when i try to choose a file the filebrowser isnt reacting at all ☹ Forcing me use taskmanager to end it.

Edit: tried opening it again a couple of times and sometimes it seems to be going smooth, sometimes its getting bugged. Weird, maybe i have to many other stuff running.

windows 10 a rather slow laptop tho

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [February 16, 2022, 11:11pm UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/17 "2022-02-16T23:11:59Z")

</div>

v0.0.5 is out, which fixes the error @justin.brzozoski hit on non-Windows systems, and adds MacOS builds. No significant functionality changes, but I’m working on some things for the next version.

> **[Release 0.0.5 - MacOS and Linux fixes · paul-griffith/kindling](https://github.com/paul-griffith/kindling/releases/tag/v0.0.5)**
>
> Adds support for MacOS builds, and fixes an error with Jide components manifesting on non-Windows platforms
> Also adds Sonarlint to the CI process.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [February 19, 2022, 1:07am UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/18 "2022-02-19T01:07:19Z")

</div>

If anyone wants to try out a ‘pre-release’, the latest build of `main` has wrapper log parsing built in, including the ability to stitch together multiple files to present as one unified log. I only have so many test cases on hand locally, so it’d be good to know how this works on ‘real’ data out there in the wild.

> <https://github.com/paul-griffith/kindling/actions/runs/1867247645>

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 2, 2022, 1:56am UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/19 "2022-03-02T01:56:24Z")

</div>

v0.1.1 (ignore the gaps in the middle 🙂 ) out now.  
I’m now using [JDeploy](https://www.jdeploy.com/) to streamline packaging and deployment. Bonuses: 1. auto-updates (opt-in) and 2. no need to run cross-OS builds via Github Actions.

The big new feature is `wrapper.log` parsing; one or more `wrapper.log` files can be selected and they’ll be rolled up and parsed as a single unit.

> **[Release 0.1.1 - Wrapper log parsing and new deployment model ·...](https://github.com/paul-griffith/kindling/releases/tag/v0.1.1)**
>
> What's Changed
> 
> Wrapper log parsing: #36
> Migrated to JDeploy, a launcher-based service to deploy the code.
> Automatic dark/light theme per OS (thanks @Joshlha!): #37
> Fixed an issue with parsing pre-...

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [March 2, 2022, 9:44am UTC](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689/20 "2022-03-02T09:44:16Z")

</div>

Awesome, I actually just wrote my own wrapper parser haha but this is great 🙂

[Next page](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689.md?page=2)
