Skip to content

Commit 53bede8

Browse files
authored
Merge pull request #252 from timvaillancourt/stdout_logging
Log regular console output to stdout, only use stderr for errors. Crazy eh?
2 parents 6ca1a97 + 6c524bc commit 53bede8

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

mongodb_consistent_backup/Logger.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,28 @@
11
import logging
22
import os
3+
import sys
34

45
from gzip import GzipFile
56

67

8+
class StdoutLogFilter(object):
9+
def __init__(self, max_level):
10+
self.max_level = max_level
11+
12+
def filter(self, entry):
13+
return entry.levelno < self.max_level
14+
15+
716
class Logger:
817
def __init__(self, config, backup_time):
918
self.config = config
1019
self.backup_name = self.config.backup.name
1120
self.backup_time = backup_time
1221

13-
self.log_level = logging.INFO
22+
self.stderr_level = logging.ERROR
23+
self.stdout_level = logging.INFO
1424
if self.config.verbose:
15-
self.log_level = logging.DEBUG
25+
self.stdout_level = logging.DEBUG
1626

1727
self.do_file_log = False
1828
if self.config.log_dir is not '':
@@ -27,7 +37,20 @@ def __init__(self, config, backup_time):
2737

2838
def start(self):
2939
try:
30-
logging.basicConfig(level=self.log_level, format=self.log_format)
40+
logging.getLogger('').setLevel(self.stdout_level)
41+
42+
# stdout logging: DEBUG/INFO -> WARNING
43+
stdout = logging.StreamHandler(sys.stdout)
44+
stdout.setLevel(self.stdout_level)
45+
stdout.setFormatter(logging.Formatter(self.log_format))
46+
stdout.addFilter(StdoutLogFilter(self.stderr_level))
47+
logging.getLogger('').addHandler(stdout)
48+
49+
# sterrr logging: ERROR -> FATAL
50+
stderr = logging.StreamHandler(sys.stderr)
51+
stderr.setLevel(self.stderr_level)
52+
stderr.setFormatter(logging.Formatter(self.log_format))
53+
logging.getLogger('').addHandler(stderr)
3154
except Exception, e:
3255
print("Could not start logger: %s" % e)
3356
raise e
@@ -38,7 +61,7 @@ def start_file_logger(self):
3861
self.current_log_file = os.path.join(self.config.log_dir, "backup.%s.log" % self.backup_name)
3962
self.backup_log_file = os.path.join(self.config.log_dir, "backup.%s.%s.log" % (self.backup_name, self.backup_time))
4063
self.file_log = logging.FileHandler(self.backup_log_file)
41-
self.file_log.setLevel(self.log_level)
64+
self.file_log.setLevel(self.stdout_level)
4265
self.file_log.setFormatter(logging.Formatter(self.log_format))
4366
logging.getLogger('').addHandler(self.file_log)
4467
except OSError:

0 commit comments

Comments
 (0)