LogViewer is a small, single-window application that loads and displays files from the $USER/Documents/Logs folder. My applications write log files to this location, so when something misbehaves and I don’t know why, I can often find clues in the logs. This viewer is a tool designed to help with that — equipped with advanced search techniques to make troubleshooting faster and more precise.
Its purpose is simple: to provide a fast, focused way to inspect logs without distractions, so I can diagnose issues quickly and get back to what matters.
The folders build/ with their artifacts *.class will not be tracked.
LogViewer/
├── build/
│ ├── App.class ← Entry point: sets up the application.
| └── logviewer/ ← Project folder.
| | └── gui/ ← GUI logic: Window components.
| | ├── FilterDialog.class ← Dialog for filtering messages.
| | ├── MainFrame.class ← Main Window.
| | └── SearchDialog.class ← Dialog to define a Search Query.
| └── samael/ ← The Samael Framework.
| ├── chronicle/ ← This library contains classes for record keepeing.
| | └── Config.class ← Records of the Applications Configuration.
| ├── huginandmunin/ ← This library contains classes for active logging.
| | └── Debug.class ← This Debug class will console out Debug messages on various levels.
| └── necronomicon/ ← The library of stagnent data.
| └── ResourceLoader.class ← This class loads resources from the folder or from within the jar.
├── resources/ ← In here are the resources for the application stored.
| └── icons ← Icons are small pictures to identify apps, buttons, actions.
| ├── issue-loupe.ico ← Applications Icon.
| └── issue-loupe.png ← Applications Icon in png format.
├── src/ ← Source Code Section
│ ├── App.java ← Entry point: sets up the application.
| └── logviewer/ ← Project folder.
| | └── gui/ ← GUI logic: Window components.
| | ├── FilterDialog.java ← Dialog for filtering messages.
| | ├── MainFrame.java ← Main Window.
| | └── SearchDialog.java ← Dialog to define a Search Query.
| └── samael/ ← The Samael Framework.
| ├── chronicle/ ← This library contains classes for record keepeing.
| └── Config.java ← Records of the Applications Configuration.
| ├── huginandmunin/ ← This library contains classes for active logging.
| └── Debug.java ← This Debug class will console out Debug messages on various levels.
| └── necronomicon/ ← The library of stagnent data.
| └── ResourceLoader.java ← This class loads resources from the folder or from within the jar.
├── MANIFEST.MF ← Java manifest for building clickable jar files.
├── LICENSE ← GNU General Public License
└── README.md ← Project mission, usage, build instructions
Mystical background: Samael is a figure in Jewish mysticism. An Archangel and God's right hand. Samael was putting your fate on display. Hiob is a good example for that. Without digging deep into religous mythology, Samael became - or better were heavily misinterpreted - Satan, Lucifer, the Devil. This lead to a highly misunderstanding of Samael.
I thought this is the perfect name for a framework. Frameworks out there have technical names. javax or javaFX as example. But then most frameworks are also highly missunderstood. We assosiate more functionality to it, than it actually can do. That is why I chose for my framework the name Samael. Because we have to stop interpreting things into it. And actually realize the true value of it.
The framework Samael is in the baby shoes. It is in the making. Contributions are highly appriciated. Samael follows strict and clear programming conventions. Clear and descriptive documentation is a must for contributors. Samael follows, or tries to follow a black box programming style. You don't need to know what is in the method, what you need to know is what do you put in there (parameters) and what is suposed to be the result (output value). The naming conventions are clearly the naming conventions of Java, camelNamesWithLeadingLowerLetter for properties and CamelNamesWithLeadingCapitalLetter for Class names. CONSTANTS are Capitalized.
That is it so far, as a description of my Samael framework.
My name is Patrik Eigenmann. After nine years as a professional software engineer, I switched careers to live sound. I still code on the side—projects like Tone3 keep me curious, challenged, and mentally sharp. These tools aren’t polished products backed by teams. They’re personal explorations, built to deepen my understanding and share something useful with others. If you’d like to support what I do, you can donate via PayPal to p.eigenmann@gmx.net. I’d truly appreciate it. LogViewer is and always will be free—licensed under the GNU Public License v3.0. Feel free to modify it, break it, rebuild it, or run it just as it is. Thanks for checking it out.