Releases: Lifailon/lazyjournal
Releases · Lifailon/lazyjournal
0.6.0
Full Changelog: 0.5.0...0.6.0
Changes:
- Implemented tailspin-style log output coloring (functionality will be improved in future versions).
Since coloring imposes an additional load for line-by-line processing when loading the log, this slows down the filtering process. To increase performance, an asynchronous coloring process is used, which increases the speed by almost 2 times compared to the synchronous one (on average, 1.8 times). Also, the main conditions for partial keyword checking have been optimized as much as possible.
Performance:
- Loading and coloring 30K lines takes an average of 450 ms, for 100K lines it takes 1300 ms on a virtual machine (2 vCPU Intel Core i5-10400) from syslog files.
- On MacBook Pro 2019 (Intel i7 x64) it averages 700 ms per 100K lines.
Debugging:
- Debugged
btmp
andwtmp
output for issue #6 - Added log loading time (for debugging) instead of the maximum output lines value.
- Improved filtering performance. Fixed an issue in
Regex
mode when using an empty filter or a character of any value in the string, and removed the limits on the number of output lines from the previous release (50K lines inRegex
mode). - Improved performance when scrolling through the log (disabled filtering and output coloring).
- Improved performance when updating file logs in the background (updating only occurs if the file has been changed).
- Changed the timeout of the background update of all logs from one to three seconds, to avoid freezing when constantly changing data in the log with a volume of 100K lines and above.
- Fixed the problem of adjusting the cursor position when filtering text after scrolling (an empty log was displayed before manual scrolling if there are fewer lines than the current position).
- Fixed all linters errors from golangci-lint.
- Removed unused code from the previous release (list of processes and loading logs for them).
Build and installation:
- Added check for linters during build in the script and implemented build via GitHub Actions.
- Debugged installation on MacOS (quarantine exclusion).
New Contributors
0.5.0
Full Changelog: 0.4.0...0.5.0
Changes:
- Added directory
/Library/Logs/
and fixed error when reading file logs for MacOS (tail
error due to incorrect parameter setting). - Changed user log search directory for MacOS on
/Users/
, with the exception ofLibrary
and some other directories to speed up loading of log list. - Changed loading of file log lists to be executed in a goroutine to avoid interface freezing during long search function execution.
- Output of all containers to the list (including stopped ones) and their current operation status is available.
- Log output for Docker containers has been reworked to read log files from the local system in
JSON
format with output formatting. Now the logging date of each message and error output (stderr) of the application itself in the container (errors not logged by the application itself) are available. - Added a list of all units (services, sockets, etc.) with startup and running status.
- Added a list of log files used by processes (file descriptors) with the process name output.
- Added coloring of user and process names in file lists.
- Changed the output of log files in home directories to display all files with unique paths and the same file names (the modification date remains unique when sorting).
- Added a check for the absence of empty files in the lists of file logs and added truncated logs with the extension
.1
.
Tested:
- Tested the file system and added static logs for RHEL based systems.
- Tested the operation of reading logs for running processes (added the function of loading the list of processes). Since logs are available for a small number of all processes, and reading such logs via
journalctl
when filtering is much slower, this functionality was disabled in this release. - Tested the
log show
utility for MacOS support. Due to the very slow performance when loading the contents of the log, this functionality was not implemented (most likely will not be in the future).
0.4.0
Full Changelog: 0.3.0...0.4.0
Changes:
- Updated the output of the currently selected log in real time via a goroutine.
- Added a dividing line to the log with the update date, to visually indicate where the log was loaded.
- Implemented a filter for all log lists.
- Added counters for the number of loaded or filtered logs/files/containers in the lists.
- Improved filtering performance in
Regex
mode, and added a default output limit of 50 thousand lines (which can be changed in the log output window) and 200 thousand lines for other default modes, a maximum of 300 thousand lines.
0.3.0
Full Changelog: 0.2.0...0.3.0
Changes:
- Added line-by-line parsing of system boots from
journalctl
for versions that do not supportJSON
format (noted when used in WSL for kernel 5.15). - Added the
root
user home directory to the list of home directories and debugged the output of all home directories (errors) accessible to the current user. - Fixed an error checking access via
stat
for static files in/var/log
(in case of their absence, for example,syslog
ordmesg
). - Changed the error status for unavailable logs. Added red coloring of windows, as well as disabling the cursor and displaying an error for where the list of logs is not accessible to the current user (for example, there is no access to the
/var/log
directory orDocker
is missing in the system) instead of displaying the error in the general list of logs. - Implemented switching to the previous window via
Shift+Tab
. - Added the ability to change the number of log lines output via
Alt+<Up/Down>
in any window or<Left/Right>
in the window with focus on the log output window. The maximum number of entries has been added to the title of the log output window. - Removed the keyboard shortcut for changing the filter mode -
Shift+<Left/Right>
, onlyalt+<Lift/Right>
is used in any window or<Up/Down>
with focus on the filter window. - Fixed the list output in all logs (the last log was not displayed in the interface due to the offset).
- Checked support for outputting a list of services and logs for Docker Swarm.
- Added a preliminary check that journald and the containerization system are installed and supported in the current system.
0.2.0
Full Changelog: 0.1.0...0.2.0
Changes:
- Added switching for loading the user log list (
USER_UNIT
) and system boot. - Added kernel log output for selection from the system boot list.
- Added switching for loading the list of log files from the file system between
/var/log/
and/home/
. The format of the user log name is "user name : file name", all log names must be unique regardless of their location in child directories (filtering by file name). - Added to the file system log list (for
/var/log/
): syslog, dmesg (kernel logs) and authorization logs (wtmp
andbtmp
). - Support for reading binary logs via
last
andlastb
. - Added hotkeys for updating the current log to show changes (
Ctrl+R
) and clearing the input field for the filter (Ctrl+<D/W>
). - Fixed output of the last lines of the log due to shifting using
auto wrap
. - Fixed selection (coloring) of the filter field when loading a log.
- When selecting a new log, the current filter in the input field is applied to it.
- Debugged error output. In case there is no access to any system or log, the error is output in the log output field without shifting the interface.
0.1.0
First release
All basic functionality has been implemented, as well as 3 types of filtering for log output: default, fuzzy and regex.
Brief summary from the roadmap:
- Support fuzzy find and regular expression to filter output.
- Highlighting of found words and phrases during filtering.
- Sorting logs by modification date and support archived logs from file system.