RichWatch is TUI (Textual User Interface) for AWS Cloud Watch.
It formats and pretty prints Cloud Watch's logs so they are much more readable.
Because it works in terminal, you can have updates from your Lambdas and other AWS services next to your hand, automatically refreshed and represented in beautiful way by excelent Python library Rich and Textual,
Now you can try it without AWS account! If you wonder how UI looks like or how you can use it or you just looking for example of app created with Textual, now you can Install requirements and run app with:
python3 rich_watch.py dry-runand it will show you flow with example offline data.
So this is example Log output from AWS Cloud Watch:

And here is same output but using RichWatch:

⚠️ There is no theme setup yet so Rich format is based of your terminal Theme. Setup for this screenshot iszshwithagnosterinTildaconsole.
And both are for same Lambda code:
import json
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
def lambda_handler(event, context):
logger.info("Output from logging.info()")
logger.debug("Output from logging.debug()")
logger.error("Output from logging.error()")
print("Output from print()")
return {
'statusCode': 200,
'body': json.dumps('This is from response!')
}To start you need to setup credentials for AWS. You can do this using AWS Command Line, in ~/.aws/credentials file or via export command of environment variables. You can read more about this here.
You need Python and pip in version 3.6 or higher.
Then you need to install requirements:
pip3 install -r requirements.txtThen you need to create log_group.yaml file like this:
region: eu-west-0
project-a:
- path: /aws/lambda/test-lambda-0
custom-name: my-lambda-0
region: eu-west-0
- path: /aws/lambda/test-lambda-1
custom-name: my-lambda-1
region: eu-west-1
- path: /aws/lambda/test-lambda-2
region: eu-west-2
- path: /aws/lambda/test-lambda-3
custom-name: my-lambda3First region is optional default region. Then you can provide any name ex. project-a. It does not change anything for now later it will be used to group lambdas in tree view. Then you can provide list of lambdas where:
pathis obligatory and it is path to log group,custom-nameis optional and this is place where you can name your lambda (otherwise it will display last part after/),regionwitch will overwrite defaultregion. If bothregionvalues are not set, then value from yourAWSclient setup will be used.
Then you can run app:
python3 rich_watch.pyor get logs once and printout to stdout with:
python3 main.py <log_group>☑️ Check for updates and only download the latest
☑️ Save logs to file
☑️ Dry run (demo without AWS account)
☑️ Add more examples for dry-run
☑️ Better TreeView (with custom names)
⭕ Configure how many logs should be downloaded
⭕ Set default style
⭕ Allow for custom style
⭕ Support AWS CLI profiles
⭕ Create RichCloud a PyPi package
⭕ Custom log TAGs highlight
⭕ Custom refresh time
⭕ Collapse all ENDs, STARTs and REPORTs, ect.
⭕ Better StatusView
⚠️ The TUI version of RichWatch is base on Textual witch is in progress. If you see any bugs please let me know. Currently TUI is only working for Linux and Macs but on Windows you can run this in script version.
