mirror of
https://github.com/m-labs/artiq.git
synced 2024-12-26 03:38:25 +08:00
ctlmgr: forward log to master
This commit is contained in:
parent
9bb94f0f59
commit
9e96a687e2
@ -10,34 +10,13 @@ import socket
|
|||||||
|
|
||||||
from artiq.protocols.sync_struct import Subscriber
|
from artiq.protocols.sync_struct import Subscriber
|
||||||
from artiq.protocols.pc_rpc import AsyncioClient, Server
|
from artiq.protocols.pc_rpc import AsyncioClient, Server
|
||||||
from artiq.tools import verbosity_args, init_logger
|
from artiq.protocols.logging import LogForwarder
|
||||||
from artiq.tools import TaskObject, Condition
|
from artiq.tools import TaskObject, Condition
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def get_argparser():
|
|
||||||
parser = argparse.ArgumentParser(description="ARTIQ controller manager")
|
|
||||||
verbosity_args(parser)
|
|
||||||
parser.add_argument(
|
|
||||||
"-s", "--server", default="::1",
|
|
||||||
help="hostname or IP of the master to connect to")
|
|
||||||
parser.add_argument(
|
|
||||||
"--port", default=3250, type=int,
|
|
||||||
help="TCP port to use to connect to the master")
|
|
||||||
parser.add_argument(
|
|
||||||
"--retry-master", default=5.0, type=float,
|
|
||||||
help="retry timer for reconnecting to master")
|
|
||||||
parser.add_argument(
|
|
||||||
"--bind", default="::1",
|
|
||||||
help="hostname or IP address to bind to")
|
|
||||||
parser.add_argument(
|
|
||||||
"--bind-port", default=3249, type=int,
|
|
||||||
help="TCP port to listen to for control (default: %(default)d)")
|
|
||||||
return parser
|
|
||||||
|
|
||||||
|
|
||||||
class Controller:
|
class Controller:
|
||||||
def __init__(self, name, ddb_entry):
|
def __init__(self, name, ddb_entry):
|
||||||
self.name = name
|
self.name = name
|
||||||
@ -252,9 +231,54 @@ class ControllerManager(TaskObject):
|
|||||||
self.controller_db.current_controllers.active[k].retry_now.notify()
|
self.controller_db.current_controllers.active[k].retry_now.notify()
|
||||||
|
|
||||||
|
|
||||||
|
def get_argparser():
|
||||||
|
parser = argparse.ArgumentParser(description="ARTIQ controller manager")
|
||||||
|
|
||||||
|
group = parser.add_argument_group("verbosity")
|
||||||
|
group.add_argument("-v", "--verbose", default=0, action="count",
|
||||||
|
help="increase logging level")
|
||||||
|
group.add_argument("-q", "--quiet", default=0, action="count",
|
||||||
|
help="decrease logging level")
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"-s", "--server", default="::1",
|
||||||
|
help="hostname or IP of the master to connect to")
|
||||||
|
parser.add_argument(
|
||||||
|
"--port-notify", default=3250, type=int,
|
||||||
|
help="TCP port to connect to for notifications")
|
||||||
|
parser.add_argument(
|
||||||
|
"--port-logging", default=1066, type=int,
|
||||||
|
help="TCP port to connect to for logging")
|
||||||
|
parser.add_argument(
|
||||||
|
"--retry-master", default=5.0, type=float,
|
||||||
|
help="retry timer for reconnecting to master")
|
||||||
|
parser.add_argument(
|
||||||
|
"--bind", default="::1",
|
||||||
|
help="hostname or IP address to bind to")
|
||||||
|
parser.add_argument(
|
||||||
|
"--bind-port", default=3249, type=int,
|
||||||
|
help="TCP port to listen to for control (default: %(default)d)")
|
||||||
|
return parser
|
||||||
|
|
||||||
|
|
||||||
|
class SourceAdder:
|
||||||
|
def filter(self, record):
|
||||||
|
if not hasattr(record, "source"):
|
||||||
|
record.source = "ctlmgr"
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
args = get_argparser().parse_args()
|
args = get_argparser().parse_args()
|
||||||
init_logger(args)
|
|
||||||
|
root_logger = logging.getLogger()
|
||||||
|
root_logger.setLevel(logging.WARNING + args.quiet*10 - args.verbose*10)
|
||||||
|
source_adder = SourceAdder()
|
||||||
|
console_handler = logging.StreamHandler()
|
||||||
|
console_handler.setFormatter(logging.Formatter(
|
||||||
|
"%(levelname)s:%(source)s:%(name)s:%(message)s"))
|
||||||
|
console_handler.addFilter(source_adder)
|
||||||
|
root_logger.addHandler(console_handler)
|
||||||
|
|
||||||
if os.name == "nt":
|
if os.name == "nt":
|
||||||
loop = asyncio.ProactorEventLoop()
|
loop = asyncio.ProactorEventLoop()
|
||||||
@ -263,7 +287,15 @@ def main():
|
|||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
atexit.register(lambda: loop.close())
|
atexit.register(lambda: loop.close())
|
||||||
|
|
||||||
ctlmgr = ControllerManager(args.server, args.port, args.retry_master)
|
logfwd = LogForwarder(args.server, args.port_logging,
|
||||||
|
args.retry_master)
|
||||||
|
logfwd.addFilter(source_adder)
|
||||||
|
root_logger.addHandler(logfwd)
|
||||||
|
logfwd.start()
|
||||||
|
atexit.register(lambda: loop.run_until_complete(logfwd.stop()))
|
||||||
|
|
||||||
|
ctlmgr = ControllerManager(args.server, args.port_notify,
|
||||||
|
args.retry_master)
|
||||||
ctlmgr.start()
|
ctlmgr.start()
|
||||||
atexit.register(lambda: loop.run_until_complete(ctlmgr.stop()))
|
atexit.register(lambda: loop.run_until_complete(ctlmgr.stop()))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user