kstamand
Regular Contributor
Updated 28-Feb-2026.
Be sure to run UPDATE option from the Shell's script menu, to get the latest release!!
v1.1. (28-Feb-2026)
- Added: UI - Filter presets (Save, Edit, Delete)
- Added: UI - inline filter validation
- Added: UI - dynamic help information
- Updated: UI - expanded filter logic capabilities beyond simple AND, OR, AND NOT to now include tag: term OPERATOR term
- Fixed: Script - invalid menu option handling (return to menu, and not exit), to show the latest version info in menu after update
- Added: Script - added capturing debugging to file when running Shell menus functions (for helping me troubleshoot)
- Updated: README - updated with Preset filtering information and added MIT License info
Source Code Change Log
This script also updates the System Log page of the Router UI to include dynamic filtering capabilities to:
Note - the script only filters records from the systems syslog file for display purposes, no records are deleted from the underlying syslog
Note - filtered text is case sensitive. So filtering for get is different than Get
This script DOES NOT equal or replace the functionality that the SCRIBE addon provides.
Instead, it is a simpler lightweight addon that only utilizes the native capabilities of the router.
IT IS NOT RECOMMENDED TO INSTALL THIS SCRIPT AND SCRIBE AT THE SAME TIME. CHOOSE ONE OR THE OTHER
1. Hardcoded Filtering - By default, the System Log page filters log records to display based on the contents of a "logFilter.json" file. This script includes an EDIT option that allows you to customize to your liking.
2. Dynamic Filtering - The System Log page is modifed to allow you to interactively select which log records to INCLUDE or EXCLUDE, with the default action of filtering records based on the contents of the logFilter.json file
Hardcoded Filtering changes are made from an SSH session to the router, and choosing option 5 from the modsyslogui menu
SSH to the router and enter:
The default contents of the logFilter.json file are:
To edit this file, add one line for each string from a given log record you want to exclude assocated log records from being displayed
- string needs to be enclosed in quotes ("")
- each line, except the last line of the list of filtering strings, must end in a comma (,)
Example custimized logFilter.json file, to exclude all wireless events ("wlceventd"), Diversion records ("Diversion:"), and Skynet BLOCKED records ("BLOCKED"):
TIPS
ALL System log records, generally start with a script function name. Examples;
To skip displaying the menu, you can run select options directly by running modsyslogui with one of the following parameters;
- modsyslogui install
- modsyslogui update
- modsyslogui enable
- modsyslogui disable
- modsyslogui uninstall
1. Show all log records - leave filter text box empty (this is the default option, unless you have a favorite preset you've set to be the default (Load automatically)
2. Include - display any records that match one of your filtering terms
3. Exclude - exclude records containing any one of your filtering terms from displaying
4. Logical - display any records that match your simple (term LOGICAL term) or tag selection (tag: term LOGICAL term) Complex boolean type functionality is not supported
5. Presets - save, edit, delete any of your favorite filtering options
This project is licensed under the MIT License.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, provided that the above copyright notice and this permission notice are included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
Be sure to run UPDATE option from the Shell's script menu, to get the latest release!!
v1.1. (28-Feb-2026)
- Added: UI - Filter presets (Save, Edit, Delete)
- Added: UI - inline filter validation
- Added: UI - dynamic help information
- Updated: UI - expanded filter logic capabilities beyond simple AND, OR, AND NOT to now include tag: term OPERATOR term
- Fixed: Script - invalid menu option handling (return to menu, and not exit), to show the latest version info in menu after update
- Added: Script - added capturing debugging to file when running Shell menus functions (for helping me troubleshoot)
- Updated: README - updated with Preset filtering information and added MIT License info
Source Code Change Log
ModSyslogUI - Customize router's "System Log" page with custom filtering capabilities
About:
The default filtering capabilities of what is displayed on the System Log page of the router is limited to hardcoded set of text strings in a file called "logFilter.json". This script adds a capability to edit that file to your likings.This script also updates the System Log page of the Router UI to include dynamic filtering capabilities to:
Note - the script only filters records from the systems syslog file for display purposes, no records are deleted from the underlying syslog
Note - filtered text is case sensitive. So filtering for get is different than Get
- Show All - display all log records, excluding whatever is noted in logFilter.json (Show All is the default filer on page load, unless you have a Preset favorite of your choosing)
- Include - display only log records containing one of the string or strings of text you choose (separate each by a comma)
Example - to include all Skynet and Diversion log records only, enter Skynet,Diversion - Exclude - exclude log records containing any one of the string or strings of text you chose (separate each by a comma)
Example - to exlcude all Firewall log records that where blocked, enter the string BLOCKED - Logical - display only log records that match your logical conditions - term LOGICAL term (only AND | OR | AND NOT are valid LOGICAl options and must be upper case)
Two types of logicals are supported - simple and "tags" (syslog record format - Date tag messages)Simple - show only kernel errors, enter kernel AND errorTags- show only kernel tagged records, where ethernet port is down (kernel: eth AND Down) - Presets - Save, Edit, or Delete your favorite filtering options - with the added capability of selecting one to load and run automatically when entering the System log page
This script DOES NOT equal or replace the functionality that the SCRIBE addon provides.
Instead, it is a simpler lightweight addon that only utilizes the native capabilities of the router.
IT IS NOT RECOMMENDED TO INSTALL THIS SCRIPT AND SCRIBE AT THE SAME TIME. CHOOSE ONE OR THE OTHER
Overview:
- Installs script onto router to add filtering capabilities to the routers "System Log" UI page
- The script provides an interactive manu of options to perform various script maintenance functions
1. Hardcoded Filtering - By default, the System Log page filters log records to display based on the contents of a "logFilter.json" file. This script includes an EDIT option that allows you to customize to your liking.
2. Dynamic Filtering - The System Log page is modifed to allow you to interactively select which log records to INCLUDE or EXCLUDE, with the default action of filtering records based on the contents of the logFilter.json file
Hardcoded Filtering changes are made from an SSH session to the router, and choosing option 5 from the modsyslogui menu
Install:
Requires Asuswrt-Merlin and JFFS enabledSSH to the router and enter:
Code:
/usr/sbin/curl --retry 3 "https://raw.githubusercontent.com/kstamand/modsyslogui/master/modsyslogui" -o "/tmp/modsyslogui" && chmod +x /tmp/modsyslogui && sh /tmp/modsyslogui install
Configuration:
No configuration is required, unless you want to edit the default contents of the "logFilter.json" file --> option 5 from the modsyslogui menu.The default contents of the logFilter.json file are:
Code:
{
"filter": [
"already exist in UDB, can't add it",
"not mesh client, can't update it's ip",
"not exist in UDB, can't update it",
"send_redir_page"
]
}
To edit this file, add one line for each string from a given log record you want to exclude assocated log records from being displayed
- string needs to be enclosed in quotes ("")
- each line, except the last line of the list of filtering strings, must end in a comma (,)
Example custimized logFilter.json file, to exclude all wireless events ("wlceventd"), Diversion records ("Diversion:"), and Skynet BLOCKED records ("BLOCKED"):
Code:
{
"filter": [
"already exist in UDB, can't add it",
"not mesh client, can't update it's ip",
"not exist in UDB, can't update it",
"send_redir_page",
"wlceventd",
"Diversion:",
"BLOCKED"
]
}
TIPS
ALL System log records, generally start with a script function name. Examples;
- The majority of ADDON script contributors prefix their log records with the name of their script (e.g., Diversion, Skynet, Scribe, ...)
- Other than that, scan log records for unique strings from a given record to inlude / exclude, such as
- wireless events (leaving or joining) = wlcevented
- ethernet connected devices powering on or shutting down (entering listening | learning | forwarding state)
- specific addon scripts (e.g., log records starting with modsyslogui)
Command line usage:
Once installed, from a terminal ssh session into the router, enter the command modsyslogui and choose from one of the menu options:To skip displaying the menu, you can run select options directly by running modsyslogui with one of the following parameters;
- modsyslogui install
- modsyslogui update
- modsyslogui enable
- modsyslogui disable
- modsyslogui uninstall
System Log Page usage:
The System Log page is customized by this script to add a dynamic **Log Filtering Option** box, where you have three button options + a filtering text box (terms to be filtered on):1. Show all log records - leave filter text box empty (this is the default option, unless you have a favorite preset you've set to be the default (Load automatically)
2. Include - display any records that match one of your filtering terms
3. Exclude - exclude records containing any one of your filtering terms from displaying
4. Logical - display any records that match your simple (term LOGICAL term) or tag selection (tag: term LOGICAL term) Complex boolean type functionality is not supported
5. Presets - save, edit, delete any of your favorite filtering options
License
License
Copyright (c) 2026 kstamandThis project is licensed under the MIT License.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, provided that the above copyright notice and this permission notice are included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
Attachments
Last edited: