Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: m-labs/artiq
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 6c856025cc18
Choose a base ref
...
head repository: m-labs/artiq
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 797bf9830c6b
Choose a head ref
  • 4 commits
  • 6 files changed
  • 1 contributor

Commits on Oct 17, 2015

  1. Copy the full SHA
    f6fd7ec View commit details
  2. Copy the full SHA
    60ed88f View commit details
  3. Copy the full SHA
    04a049b View commit details
  4. Copy the full SHA
    797bf98 View commit details
Showing with 49 additions and 21 deletions.
  1. +3 −1 artiq/language/__init__.py
  2. +23 −0 artiq/language/logging.py
  3. +7 −6 artiq/master/log.py
  4. +2 −1 artiq/master/worker_impl.py
  5. +7 −5 artiq/protocols/logging.py
  6. +7 −8 examples/master/repository/arguments_demo.py
4 changes: 3 additions & 1 deletion artiq/language/__init__.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
# Copyright (C) 2014, 2015 Robert Jordens <jordens@gmail.com>

from artiq.language import core, environment, units, scan
from artiq.language import core, environment, units, scan, logging
from artiq.language.core import *
from artiq.language.environment import *
from artiq.language.units import *
from artiq.language.scan import *
from artiq.language.logging import *


__all__ = []
__all__.extend(core.__all__)
__all__.extend(environment.__all__)
__all__.extend(units.__all__)
__all__.extend(scan.__all__)
__all__.extend(logging.__all__)
23 changes: 23 additions & 0 deletions artiq/language/logging.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from artiq.language.environment import *

import logging


__all__ = ["LogExperiment"]


class LogExperiment:
def init_logger(self):
"""Call this from build() to add a logging level enumeration
widget, initialize logging globally, and create a logger.
Your class must also derive from ``HasEnvironment`` (or
``EnvExperiment``).
The created logger is called ``self.logger``."""
level = self.get_argument("log_level", EnumerationValue(
["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]))

if level is not None:
logging.basicConfig(level=getattr(logging, level))
self.logger = logging.getLogger(self.__class__.__name__)
13 changes: 7 additions & 6 deletions artiq/master/log.py
Original file line number Diff line number Diff line change
@@ -24,7 +24,9 @@ def __init__(self, log_buffer, *args, **kwargs):

def emit(self, record):
message = self.format(record)
self.log_buffer.log(record.levelno, record.source, record.created, message)
for part in message.split("\n"):
self.log_buffer.log(record.levelno, record.source, record.created,
part)


def log_worker(rid, message):
@@ -56,20 +58,19 @@ def init_log(args):
root_logger.setLevel(logging.NOTSET) # we use our custom filter only
flt = SourceFilter(logging.WARNING + args.quiet*10 - args.verbose*10,
"master")
full_fmt = logging.Formatter(
"%(levelname)s:%(source)s:%(name)s:%(message)s")

handlers = []
console_handler = logging.StreamHandler()
console_handler.setFormatter(full_fmt)
console_handler.setFormatter(logging.Formatter(
"%(levelname)s:%(source)s:%(name)s:%(message)s"))
handlers.append(console_handler)

if args.log_file:
file_handler = logging.handlers.RotatingFileHandler(
args.log_file,
maxBytes=args.log_max_size*1024,
backupCount=args.log_backup_count)
file_handler.setFormatter(full_fmt)
file_handler.setFormatter(logging.Formatter(
"%(asctime)s %(levelname)s:%(source)s:%(name)s:%(message)s"))
handlers.append(file_handler)

log_buffer = LogBuffer(1000)
3 changes: 2 additions & 1 deletion artiq/master/worker_impl.py
Original file line number Diff line number Diff line change
@@ -158,7 +158,8 @@ def examine(device_mgr, dataset_mgr, file):


def main():
sys.stdout = sys.stderr = LogForwarder()
sys.stdout = LogForwarder()
sys.stderr = LogForwarder()

start_time = None
rid = None
12 changes: 7 additions & 5 deletions artiq/protocols/logging.py
Original file line number Diff line number Diff line change
@@ -101,16 +101,18 @@ def __init__(self, host, port, reconnect_timer=5.0, queue_size=1000,
self.host = host
self.port = port
self.setFormatter(logging.Formatter(
"%(source)s:%(levelno)d:%(name)s:%(message)s"))
"%(name)s:%(message)s"))
self._queue = asyncio.Queue(queue_size)
self.reconnect_timer = reconnect_timer

def emit(self, record):
message = self.format(record)
try:
self._queue.put_nowait(message)
except asyncio.QueueFull:
pass
for part in message.split("\n"):
part = "{}:{}:{}".format(record.source, record.levelno, part)
try:
self._queue.put_nowait(part)
except asyncio.QueueFull:
break

async def _do(self):
while True:
15 changes: 7 additions & 8 deletions examples/master/repository/arguments_demo.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import logging

from artiq import *


@@ -35,8 +33,10 @@ def do(self):
print(self.sc2_enum)


class ArgumentsDemo(EnvExperiment):
class ArgumentsDemo(EnvExperiment, LogExperiment):
def build(self):
self.init_logger()

self.setattr_argument("free_value", FreeValue(None))
self.setattr_argument("number", NumberValue(42e-6,
unit="s", scale=1e-6,
@@ -53,11 +53,10 @@ def build(self):
self.sc2 = SubComponent2(parent=self)

def run(self):
logging.basicConfig(level=logging.DEBUG)
logging.error("logging test: error")
logging.warning("logging test: warning")
logging.info("logging test: info")
logging.debug("logging test: debug")
self.logger.error("logging test: error")
self.logger.warning("logging test: warning")
self.logger.info("logging test: info")
self.logger.debug("logging test: debug")

print(self.free_value)
print(self.boolean)