oqubeslogging is a proof of concept project for Qubes OS. This includes a qrexec service, which allows one AppVM (we will call it logging VM for the rest of the blog post) to have all the logs from different select VMs. This enables central logging among QubesOS land.
The second part is a Python logging handler, which if configured correctly, will allow to pass the logging lines to the logging VM
import logging from oqubeslogging import OQubesLog def main(): handler = OQubesLog("workvm", "loggingvm") logging.basicConfig(level=logging.DEBUG, handlers=[handler]) logger = logging.getLogger("example") logger.info("kushal says it works") if __name__ == "__main__": main()
Third, is another example code, which if run as root user in any VM, will collect all logs from journald and pass them to the logging VM.
Why is this useful?
The same reason we use central logging in every place. This will enable us to check only one VM to find the correct log. QubesOS is designed for single user in mind, and instead many random AppVM, we will be able to read and parse logs in that one special logging VM.