| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  | """A simple log mechanism styled after PEP 282.""" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-11-10 22:23:15 +00:00
										 |  |  | # This module should be kept compatible with Python 2.1. | 
					
						
							| 
									
										
										
										
											2002-11-19 13:12:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  | # The class here is styled after PEP 282 so that it could later be | 
					
						
							|  |  |  | # replaced with a standard Python logging implementation. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | DEBUG = 1 | 
					
						
							|  |  |  | INFO = 2 | 
					
						
							|  |  |  | WARN = 3 | 
					
						
							|  |  |  | ERROR = 4 | 
					
						
							|  |  |  | FATAL = 5 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-04 14:27:43 +00:00
										 |  |  | import sys | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  | class Log: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self, threshold=WARN): | 
					
						
							|  |  |  |         self.threshold = threshold | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _log(self, level, msg, args): | 
					
						
							|  |  |  |         if level >= self.threshold: | 
					
						
							|  |  |  |             print msg % args | 
					
						
							| 
									
										
										
										
											2002-11-04 14:27:43 +00:00
										 |  |  |             sys.stdout.flush() | 
					
						
							| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def log(self, level, msg, *args): | 
					
						
							|  |  |  |         self._log(level, msg, args) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def debug(self, msg, *args): | 
					
						
							|  |  |  |         self._log(DEBUG, msg, args) | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  |     def info(self, msg, *args): | 
					
						
							|  |  |  |         self._log(INFO, msg, args) | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  |     def warn(self, msg, *args): | 
					
						
							|  |  |  |         self._log(WARN, msg, args) | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  |     def error(self, msg, *args): | 
					
						
							|  |  |  |         self._log(ERROR, msg, args) | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  |     def fatal(self, msg, *args): | 
					
						
							|  |  |  |         self._log(FATAL, msg, args) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | _global_log = Log() | 
					
						
							|  |  |  | log = _global_log.log | 
					
						
							|  |  |  | debug = _global_log.debug | 
					
						
							|  |  |  | info = _global_log.info | 
					
						
							|  |  |  | warn = _global_log.warn | 
					
						
							|  |  |  | error = _global_log.error | 
					
						
							|  |  |  | fatal = _global_log.fatal | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def set_threshold(level): | 
					
						
							| 
									
										
										
										
											2004-08-03 18:53:07 +00:00
										 |  |  |     # return the old threshold for use from tests | 
					
						
							|  |  |  |     old = _global_log.threshold | 
					
						
							| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  |     _global_log.threshold = level | 
					
						
							| 
									
										
										
										
											2004-08-03 18:53:07 +00:00
										 |  |  |     return old | 
					
						
							| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def set_verbosity(v): | 
					
						
							| 
									
										
										
										
											2003-02-20 02:09:30 +00:00
										 |  |  |     if v <= 0: | 
					
						
							| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  |         set_threshold(WARN) | 
					
						
							| 
									
										
										
										
											2003-02-20 02:09:30 +00:00
										 |  |  |     elif v == 1: | 
					
						
							| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  |         set_threshold(INFO) | 
					
						
							| 
									
										
										
										
											2003-02-20 02:09:30 +00:00
										 |  |  |     elif v >= 2: | 
					
						
							| 
									
										
										
										
											2002-06-04 20:00:26 +00:00
										 |  |  |         set_threshold(DEBUG) |