Show More
@@ -95,6 +95,26 b' def catch_config_error(method, app, *args, **kwargs):' | |||
|
95 | 95 | class ApplicationError(Exception): |
|
96 | 96 | pass |
|
97 | 97 | |
|
98 | class LevelFormatter(logging.Formatter): | |
|
99 | """Formatter with additional `highlevel` record | |
|
100 | ||
|
101 | This field is empty if log level is less than highlevel_limit, | |
|
102 | otherwise it is formatted with self.highlevel_format. | |
|
103 | ||
|
104 | Useful for adding 'WARNING' to warning messages, | |
|
105 | without adding 'INFO' to info, etc. | |
|
106 | """ | |
|
107 | highlevel_limit = logging.WARN | |
|
108 | highlevel_format = " - %(levelname)s - " | |
|
109 | ||
|
110 | def format(self, record): | |
|
111 | if record.levelno >= self.highlevel_limit: | |
|
112 | record.highlevel = self.highlevel_format % record.__dict__ | |
|
113 | else: | |
|
114 | record.highlevel = "" | |
|
115 | ||
|
116 | return super(LevelFormatter, self).format(record) | |
|
117 | ||
|
98 | 118 | |
|
99 | 119 | class Application(SingletonConfigurable): |
|
100 | 120 | """A singleton application with full configuration support.""" |
@@ -133,13 +153,19 b' class Application(SingletonConfigurable):' | |||
|
133 | 153 | self.log_level = new |
|
134 | 154 | self.log.setLevel(new) |
|
135 | 155 | |
|
136 |
log_f |
|
|
156 | log_datefmt = Unicode("%Y-%m-%d %H:%M:%S", config=True, | |
|
157 | help="The date format used by logging formatters for %(asctime)s" | |
|
158 | ) | |
|
159 | def _log_datefmt_changed(self, name, old, new): | |
|
160 | self._log_format_changed() | |
|
161 | ||
|
162 | log_format = Unicode("[%(name)s]%(highlevel)s %(message)s", config=True, | |
|
137 | 163 | help="The Logging format template", |
|
138 | 164 | ) |
|
139 | 165 | def _log_format_changed(self, name, old, new): |
|
140 | 166 | """Change the log formatter when log_format is set.""" |
|
141 | 167 | _log_handler = self.log.handlers[0] |
|
142 |
_log_formatter = l |
|
|
168 | _log_formatter = LevelFormatter(new, datefmt=self._log_datefmt) | |
|
143 | 169 | _log_handler.setFormatter(_log_formatter) |
|
144 | 170 | |
|
145 | 171 | log = Instance(logging.Logger) |
@@ -167,7 +193,7 b' class Application(SingletonConfigurable):' | |||
|
167 | 193 | _log_handler = logging.StreamHandler(open(os.devnull, 'w')) |
|
168 | 194 | else: |
|
169 | 195 | _log_handler = logging.StreamHandler() |
|
170 |
_log_formatter = l |
|
|
196 | _log_formatter = LevelFormatter(self.log_format, datefmt=self.log_datefmt) | |
|
171 | 197 | _log_handler.setFormatter(_log_formatter) |
|
172 | 198 | log.addHandler(_log_handler) |
|
173 | 199 | return log |
General Comments 0
You need to be logged in to leave comments.
Login now