James E. Blair
When tracebacks are sent to a log file or stderr using the default configurations, it can be difficult to work with those logs. Using "grep" to search for messages or time periods will typically only produce a single line of the error. Further, on a busy system the error may be interleaved with other log lines making extraction even harder. To address both of these issues, add a formatter which formats every line of a multi-line log message using the same format specifier. This is quite readable when streaming or viewing a standard log file, and it should cause all log lines to automatically appear in ELK/splunk setups since they will all have the same message format. (Though, those setups are probably better served with a native logging configuration that sends the entire record together.) It may be somewhat difficult if a multi-line log entry is recorded on a busy system with multiple threads. However, some judicious grepping should help with that since all related lineswill have the exact same timestamp (including microseconds). Advanced users/devs could specify a logging format with the thread id if necessary, though I don't think we should do that by default. Since this is implemented as a standard logging formatter, it can be opted-out via logging config files. This enables it by default, which I think is reasonable for new users, but if we decide that we would prefer opt-in, that is a simple change. Sample output (from Zuul): 2021-01-29 10:59:02,004 DEBUG zuul.Scheduler: Run handler awake 2021-01-29 10:59:02,004 ERROR zuul.Scheduler: Exception in run handler: 2021-01-29 10:59:02,004 ERROR zuul.Scheduler: Traceback (most recent call last): 2021-01-29 10:59:02,004 ERROR zuul.Scheduler: File "/home/corvus/git/zuul/zuul/zuul/scheduler.py", line 1254, in run 2021-01-29 10:59:02,004 ERROR zuul.Scheduler: raise Exception("Test") 2021-01-29 10:59:02,004 ERROR zuul.Scheduler: Exception: Test 2021-01-29 10:59:02,005 DEBUG zuul.Scheduler: Run handler sleeping Change-Id: I6d7e7e7a9e19d46a744f9ffac8d532fc6b4bba01
|2 years ago|
|contrib/statsd_exporter||4 years ago|
|doc||2 years ago|
|etc||5 years ago|
|nodepool||2 years ago|
|playbooks||3 years ago|
|releasenotes/notes||2 years ago|
|roles/nodepool-zuul-functional||3 years ago|
|tools||3 years ago|
|.coveragerc||5 years ago|
|.dockerignore||4 years ago|
|.gitignore||5 years ago|
|.gitreview||4 years ago|
|.stestr.conf||5 years ago|
|.zuul.yaml||2 years ago|
|Dockerfile||3 years ago|
|LICENSE||5 years ago|
|README.rst||4 years ago|
|TESTING.rst||3 years ago|
|bindep.txt||3 years ago|
|requirements.txt||2 years ago|
|setup.cfg||3 years ago|
|setup.py||8 years ago|
|test-requirements.txt||3 years ago|
|tox.ini||3 years ago|
Nodepool is a system for managing test node resources. It supports launching single-use test nodes from cloud providers as well as managing access to pre-defined pre-existing nodes. Nodepool is part of a suite of tools that form a comprehensive test system, including Zuul.
The latest documentation for Nodepool is published at: https://zuul-ci.org/docs/nodepool/
The latest documentation for Zuul is published at: https://zuul-ci.org/docs/zuul/
There are two Zuul-related mailing lists:
A low-traffic announcement-only list to which every Zuul operator or power-user should subscribe.
General discussion about Zuul, including questions about how to use it, and future development.
You will also find Zuul developers in the #zuul channel on Freenode IRC.
To browse the latest code, see: https://opendev.org/zuul/nodepool To clone the latest code, use git clone https://opendev.org/zuul/nodepool
Bugs are handled at: https://storyboard.openstack.org/#!/project/zuul/nodepool
Code reviews are handled by gerrit at https://review.opendev.org
After creating a Gerrit account, use git review to submit patches. Example:
# Do your commits $ git review # Enter your username if prompted
Join #zuul on Freenode to discuss development or usage.
Nodepool is free software, licensed under the Apache License, version 2.0.
Python Version Support
Nodepool requires Python 3. It does not support Python 2.