Skip to content

Commit 08c6c67

Browse files
committed
Fix #618: avoid configuring the root logger
1 parent eee32e4 commit 08c6c67

4 files changed

Lines changed: 34 additions & 41 deletions

File tree

distributed/cli/tests/test_dask_scheduler.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,6 @@ def test_bokeh(loop):
5353
with Client('127.0.0.1:%d' % Scheduler.default_port, loop=loop) as c:
5454
pass
5555

56-
while True:
57-
line = proc.stderr.readline()
58-
if b'Bokeh UI' in line:
59-
break
60-
6156
names = ['localhost', '127.0.0.1', get_ip()]
6257
if 'linux' in sys.platform:
6358
names.append(socket.gethostname())
@@ -87,11 +82,6 @@ def test_bokeh_non_standard_ports(loop):
8782
with Client('127.0.0.1:3448', loop=loop) as c:
8883
pass
8984

90-
while True:
91-
line = proc.stderr.readline()
92-
if b'Bokeh UI' in line:
93-
break
94-
9585
start = time()
9686
while True:
9787
try:
@@ -102,7 +92,7 @@ def test_bokeh_non_standard_ports(loop):
10292
sleep(0.1)
10393
assert time() < start + 20
10494
with pytest.raises(Exception):
105-
requests.get('http://127.0.0.1:4832/status/')
95+
requests.get('http://localhost:4832/status/')
10696

10797

10898
@pytest.mark.skipif(not sys.platform.startswith('linux'),
@@ -117,11 +107,6 @@ def test_bokeh_whitelist(loop):
117107
with Client('127.0.0.1:%d' % Scheduler.default_port, loop=loop) as c:
118108
pass
119109

120-
while True:
121-
line = proc.stderr.readline()
122-
if b'Bokeh UI' in line:
123-
break
124-
125110
start = time()
126111
while True:
127112
try:

distributed/config.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
from __future__ import print_function, division, absolute_import
22

3+
import logging
34
import os
4-
from .compatibility import FileExistsError
5+
import sys
6+
7+
from .compatibility import FileExistsError, logging_names
8+
59
try:
610
import yaml
711
except ImportError:
@@ -33,3 +37,26 @@ def load_config_file(path=dask_config_path):
3337

3438
ensure_config_file()
3539
config = load_config_file()
40+
41+
42+
def initialize_logging(config):
43+
loggers = config.get('logging', None)
44+
loggers.setdefault('distributed', 'info')
45+
46+
fmt = '%(name)s - %(levelname)s - %(message)s'
47+
48+
handler = logging.StreamHandler(sys.stderr)
49+
handler.setFormatter(logging.Formatter(fmt))
50+
for name, level in loggers.items():
51+
LEVEL = logging_names[level.upper()]
52+
logger = logging.getLogger(name)
53+
logger.setLevel(LEVEL)
54+
logger.addHandler(handler)
55+
logger.propagate = False
56+
57+
# http://stackoverflow.com/questions/21234772/python-tornado-disable-logging-to-stderr
58+
# XXX this silences legitimate error messages
59+
logging.getLogger('tornado').setLevel(logging.CRITICAL)
60+
61+
62+
initialize_logging(config)

distributed/scheduler.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1129,8 +1129,8 @@ def worker_stream(self, worker):
11291129
self.transitions(recommendations)
11301130

11311131
if self.validate:
1132-
logger.info("Messages: %s\nRecommendations: %s",
1133-
msgs, recommendations)
1132+
logger.debug("Messages: %s\nRecommendations: %s",
1133+
msgs, recommendations)
11341134
self.ensure_occupied()
11351135

11361136
except (StreamClosedError, IOError, OSError):
@@ -2454,8 +2454,8 @@ def transition(self, key, finish, *args, **kwargs):
24542454
finish2 = self.task_state.get(key, 'forgotten')
24552455
self.transition_log.append((key, start, finish2, recommendations))
24562456
if self.validate:
2457-
logger.info("Transition %s->%s: %s New: %s",
2458-
start, finish2, key, recommendations)
2457+
logger.debug("Transition %s->%s: %s New: %s",
2458+
start, finish2, key, recommendations)
24592459
for plugin in self.plugins:
24602460
try:
24612461
plugin.transition(key, start, finish2, *args, **kwargs)

distributed/utils.py

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import logging
66
import os
77
import re
8+
import shutil
89
import socket
910
import six
1011
import sys
@@ -357,26 +358,6 @@ def convert(task):
357358
return {tokey(k): convert(v) for k, v in dsk.items()}
358359

359360

360-
import logging
361-
from .compatibility import logging_names
362-
logging.basicConfig(format='%(name)s - %(levelname)s - %(message)s',
363-
level=logging.INFO)
364-
365-
for name, level in config.get('logging', {}).items():
366-
LEVEL = logging_names[level.upper()]
367-
logging.getLogger(name).setLevel(LEVEL)
368-
369-
# http://stackoverflow.com/questions/21234772/python-tornado-disable-logging-to-stderr
370-
stream = logging.StreamHandler(sys.stderr)
371-
stream.setLevel(logging.CRITICAL)
372-
logging.getLogger('tornado').addHandler(stream)
373-
logging.getLogger('tornado').propagate = False
374-
375-
376-
from contextlib import contextmanager
377-
import shutil
378-
379-
380361
def seek_delimiter(file, delimiter, blocksize):
381362
""" Seek current file to next byte after a delimiter bytestring
382363

0 commit comments

Comments
 (0)