~mvo/software-center/lp957599

« back to all changes in this revision

Viewing changes to softwarecenter/log.py

  • Committer: Michael Vogt
  • Date: 2012-03-15 18:20:17 UTC
  • mfrom: (2863.1.1 pep8-test-part1)
  • Revision ID: michael.vogt@ubuntu.com-20120315182017-o14wchqvn8vr40m8
mergedĀ lp:~mvo/software-center/pep8-test-1/

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
 
27
27
""" setup global logging for software-center """
28
28
 
 
29
 
29
30
class NullFilterThatWarnsAboutRootLoggerUsage(logging.Filter):
30
31
    """ pass all messages through, but warn about messages that
31
32
        come from the root logger (and not from the softwarecenter root)
36
37
            s = "logs to the root logger: '%s'" % str(fixme_msg)
37
38
            logging.getLogger("softwarecenter.fixme").warn(s)
38
39
        return 1
39
 
        
 
40
 
 
41
 
40
42
class OrFilter(logging.Filter):
41
43
    """ A filter that can have multiple filter strings and shows
42
44
        the message if any of the filter strings matches
43
45
    """
 
46
 
44
47
    def __init__(self):
45
48
        self.filters = []
 
49
 
46
50
    def filter(self, record):
47
 
        for (fname,flen) in self.filters:
48
 
            if (flen == 0 or 
49
 
                fname == record.name or 
50
 
                (len(record.name)>flen and record.name[flen] == ".")):
 
51
        for (fname, flen) in self.filters:
 
52
            if (flen == 0 or
 
53
                fname == record.name or
 
54
                (len(record.name) > flen and record.name[flen] == ".")):
51
55
                return 1
52
56
        return 0
 
57
 
53
58
    def add(self, log_filter):
54
59
        """ add a log_filter string to the list of OR expressions """
55
60
        self.filters.append((log_filter, len(log_filter)))
56
61
 
 
62
 
57
63
def add_filters_from_string(long_filter_str):
58
64
    """ take the string passed from e.g. the commandline and create
59
65
        logging.Filters for it. It will prepend "softwarecenter."
66
72
        filter_str = filter_str.strip("")
67
73
        if filter_str == "":
68
74
            return
69
 
        if not (filter_str.startswith("sc") or 
 
75
        if not (filter_str.startswith("sc") or
70
76
                filter_str.startswith("softwarecenter")):
71
77
            filter_str = "sc.%s" % filter_str
72
78
        if filter_str.startswith("sc"):
76
82
    handler.addFilter(logfilter)
77
83
 
78
84
 
79
 
 
80
85
# setup global software-center logging
81
86
root = logging.getLogger()
82
 
fmt = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s", None)
 
87
fmt = logging.Formatter(
 
88
    "%(asctime)s - %(name)s - %(levelname)s - %(message)s", None)
83
89
handler = logging.StreamHandler()
84
90
handler.setFormatter(fmt)
85
91
root.addHandler(handler)
92
98
 
93
99
# try to fix inaccessible s-c directory (#688682)
94
100
if not os.access(SOFTWARE_CENTER_CACHE_DIR, os.W_OK):
95
 
    logging.warn("found not writable '%s' dir, trying to fix" % SOFTWARE_CENTER_CACHE_DIR)
 
101
    logging.warn("found not writable '%s' dir, trying to fix" %
 
102
                 SOFTWARE_CENTER_CACHE_DIR)
96
103
    # if we have to do more renames, soemthing else is wrong and its
97
104
    # ok to crash later to learn about the problem
98
105
    for i in range(10):
110
117
    except:
111
118
        logging.exception("failed to fix non-writeable logfile")
112
119
 
113
 
logfile_handler = logging.handlers.RotatingFileHandler(logfile_path,
114
 
                                                       maxBytes=100*1000,
115
 
                                                       backupCount=5)
 
120
logfile_handler = logging.handlers.RotatingFileHandler(
 
121
    logfile_path, maxBytes=100 * 1000, backupCount=5)
116
122
logfile_handler.setLevel(logging.INFO)
117
123
logfile_handler.setFormatter(fmt)
118
124
root.addHandler(logfile_handler)
119
 
 
120
 
 
121
125
root.setLevel(logging.INFO)