11import logging
22import os
3+ import sys
34
45from 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+
716class 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