blob: b283bedbbc9553195395ad94e90889040c3edeb8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
import logging
import os
from ceph_volume import terminal
from ceph_volume import conf
BASE_FORMAT = "[%(name)s][%(levelname)-6s] %(message)s"
FILE_FORMAT = "[%(asctime)s]" + BASE_FORMAT
def setup(name='ceph-volume.log', log_path=None, log_level=None):
log_path = log_path or conf.log_path
# if a non-root user calls help or other no-sudo-required command the
# logger will fail to write to /var/lib/ceph/ so this /tmp/ path is used as
# a fallback
tmp_log_file = os.path.join('/tmp/', name)
root_logger = logging.getLogger()
# The default path is where all ceph log files are, and will get rotated by
# Ceph's logrotate rules.
log_level = log_level or "DEBUG"
log_level = getattr(logging, log_level.upper())
root_logger.setLevel(log_level)
try:
fh = logging.FileHandler(log_path)
except (OSError, IOError) as err:
terminal.warning("Falling back to /tmp/ for logging. Can't use %s" % log_path)
terminal.warning(str(err))
conf.log_path = tmp_log_file
fh = logging.FileHandler(tmp_log_file)
fh.setLevel(log_level)
fh.setFormatter(logging.Formatter(FILE_FORMAT))
root_logger.addHandler(fh)
def setup_console():
# TODO: At some point ceph-volume should stop using the custom logger
# interface that exists in terminal.py and use the logging module to
# produce output for the terminal
# Console Logger
sh = logging.StreamHandler()
sh.setFormatter(logging.Formatter('[terminal] %(message)s'))
sh.setLevel(logging.DEBUG)
terminal_logger = logging.getLogger('terminal')
# allow all levels at root_logger, handlers control individual levels
terminal_logger.addHandler(sh)
|