Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

master/gui: logging messages #45

Closed
jordens opened this issue Jun 21, 2015 · 5 comments
Closed

master/gui: logging messages #45

jordens opened this issue Jun 21, 2015 · 5 comments

Comments

@jordens
Copy link
Member

jordens commented Jun 21, 2015

One dock within the GUI will be showing logging messages from the scheduler, the workers, the experiments, the controllers, the core device. Probably, the master will act as a hub rceiving aggregating messages and then save them to files and re-emit them to the GUI. The GUI can then filter on severity, source, or other metadata within the LogRecord (like experiment name). We need to decide whether python-logging fits the requirements (metadata with LogRecords, networking, interaction with asyncio, lazy formatting) or whether we need to roll our own.

@sbourdeauducq
Copy link
Member

I guess that for v1.0, we can just redirect the standard output from all experiments into the GUI.

@sbourdeauducq
Copy link
Member

I have implemented this simple solution now.

@sbourdeauducq
Copy link
Member

The discussed features should be there now:

  • log filter in GUI by level (there are no other filters, as I remember from last meeting you did not want them?)
  • colors by level
  • timestamps, source (master, worker, controller, etc.)
  • log files saved on master, with rotation
  • logs from workers, controllers and controller managers are sent to the master and integrated
  • logging from the core device can be done by RPCing the Python log functions. I do not think it makes much sense to try to integrate the log printed on the device's serial port and also accessible via artiq_coretool log, as the latter is typically used to debug situations where low-level components (including the communication code) are broken. Its advantage, though, would be backgrounding/speed (if made accessible to the user) as RPC will wait for a reply.

@jordens
Copy link
Member Author

jordens commented Oct 17, 2015

Finer filtering would be on the cartesian product of level and some notion of "source" plus the "source" hierarchy hierarchy. Sounds hairy to me.

@ghost
Copy link

ghost commented Oct 23, 2015

I think the following comb will groom this beast.

f = get_search_box_text()
if len(f)>0: # ignore all other filtering (e.g. by source)
    for s in log:
        if s.find(f):
            show_s_in_log()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants