feat(#4342) logfile view - chunk navigation#5390
Conversation
Add byte-range logfile chunk navigation for skipped content, with a compact follow/page up/page down toolbar that switches between live tailing and manual browsing. Also parse logfile window metadata, show skipped bytes for manual chunks, and add localized navigation labels.
replaced plain strings with Enum
Added previous/next chunk navigation Show skipped and remaining byte counts Render only complete log lines across chunk boundaries Automatically reset and resume follow mode after logfile compression Improved tail-follow scroll behavior and manual chunk navigation
|
Hi @cdprete, I created a new PR for issue #4342, as I realized my previous approach would not be sufficient to implement this feature cleanly. I think the previous PR(#5326) can be closed. Could you please review the new PR and let me know if any further changes are needed? It took longer than I initially expected because of the edge cases involved. |
|
Hi @vetri15. You can close the old PR yourself if you think the new one supersedes it.
I try to do it asap.
No worries. |
|
@SteKoe @erikpetzold @ulischulte @hzpz can you maybe allow the pipeline to run in the meantime so that we make sure there are no potential issues? Tnx |
|
Yeah, you were right @cdprete. I have closed the old PR. |
|
By the way, please be aware that there are issues with empty lines. |
|
Hi @cdprete, Thanks for pointing this out. I checked #5388 and updated this PR to handle empty log lines in the logfile view as well. Empty strings are now rendered as |
Hi @vetri15. I just wanted to inform you I updated the styles in my PR as follows:
|
…epending on the location of the scroll bar , requiring 2 clicks
… the followmode tick.
…ressed. Now, only 416 errors are suppressed, so other errors will be shown on screen.
|
Hi @cdprete , I have summarized the issues you mentioned before. have corrected most of them. need your input on the remaining ones.
|
|
Hi @vetri15.
I'll give it a new try as soon as I've some more time and I let you know.
I'm using the servlet sample which is already part of the project. Maybe it helps.
Yes and no. I mean, if "remaining" is not 0, you're now fetching it and rendering it.
I'll give it a new try as soon as I've some more time and I let you know. |
…ble full width at all times
|
Hi @vetri15. This (it's the latest version you committed, btw) maybe shows better what I meant with the styles getting broken: Also, I can still see 416 responses flooding the console: Video.Project.mp4The navigation seems to be worse now than in the previous version, in particular in the following flow:
See below: Recording.2026-05-26.200614.mp4Also, unless I've maybe too few logs, the navigation between chunks is not really possible. On page up, the full logs gets then rendered again, instead of just the previous chunk which makes me wonder what happens if the log file has GB of text in it. |
|
Hi @cdprete my bad, I missed that style missing. I have corrected that in my local repo. will push it once all issues are solved. I am working on the UI auto recovering on stop and start of a server. have decided to do a retry logic for a few seconds before resetting the page. so there will be no need of manual refresh. 416 spam error:
Thanks for the insight , I was able to pinpoint the cause of error. when appending new bytes if the request is on the edge of the byte range , it is causing the error. previously I was testing with a slightly higher frequency quartz job , so it went unnoticed. Regarding that, Manual file navigation rendering few lines , it was intentional based on the following discussion on the previous PR (#5326), #5326 (comment), If you prefer filling the table approach , let me know. However, that would make the code a bit more complex. |
|
Hi @vetri15.
I would because currently it looks quite awkward, especially considering that going one page back simply renders then everything. Also, will going back always render everything or will also work in chunks? |
|
Hi @cdprete No , going back would only render the previous 300KB of text. Suppose if there were |
|
Yeah, if possible, I would try to fill the table up.
The ideal implementation would be to show, on every page up/down, exactly
enough lines to fill the table but that don't render the vertical scrollbar.
But that would be too complex to implement. :)
Il mer 27 mag 2026, 06:54 vetri15 ***@***.***> ha scritto:
… *vetri15* left a comment (codecentric/spring-boot-admin#5390)
<#5390 (comment)>
Hi @cdprete <https://github.com/cdprete>
No , going back would only render the previous 300KB of text. Suppose if
there were
400KB of skipped bytes , then on first 'back' it would render 100-400
window , and on next back it would render 0-100. So technically while going
back to the start of the file would also result in few lines rendered on
the table. Should I also change this behaviour to fill the table?
—
Reply to this email directly, view it on GitHub
<#5390?email_source=notifications&email_token=ACAZGWHPF7RXO7IUQ5FOLXL44ZYIXA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTINJVGE2DCOJSGMZKM4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJLDGN5XXIZLSL5RWY2LDNM#issuecomment-4551419232>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACAZGWA4PDJLZ7D2KMW2ADT44ZYIXAVCNFSM6AAAAACZLAJ6V2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHM2DKNJRGQYTSMRTGI>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
…le boundaries by snapping ranges to the start/end of the logfile.
|
Hi @cdprete , I have updated the PR and implemented fixes for the remaining bugs. For navigation near the start or end of the file, I am overlapping bytes to keep the table filled using the existing 300 KB chunk size. regarding the table not being filled near start and end: Rendering exactly the number of bytes needed to fill the table is difficult because wrapped lines take uneven vertical space. Zooming in or out also changes how many lines are needed to fill the visible table area. So keeping a fixed 300 KB chunk with boundary overlap is a more stable approach.
|








Implemented logfile chunk navigation and recovery improvements.