Package daklib :: Module urgencylog
[hide private]
[frames] | no frames]

Source Code for Module daklib.urgencylog

 1  # vim:set et sw=4: 
 2   
 3  """ 
 4  Urgency Logger class for dak 
 5   
 6  @contact: Debian FTP Master <ftpmaster@debian.org> 
 7  @copyright: 2001 - 2006 James Troup <james@nocrew.org> 
 8  @copyright: 2009  Joerg Jaspert <joerg@debian.org> 
 9  @license: GNU General Public License version 2 or later 
10  """ 
11   
12  # This program is free software; you can redistribute it and/or modify 
13  # it under the terms of the GNU General Public License as published by 
14  # the Free Software Foundation; either version 2 of the License, or 
15  # (at your option) any later version. 
16   
17  # This program is distributed in the hope that it will be useful, 
18  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
19  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
20  # GNU General Public License for more details. 
21   
22  # You should have received a copy of the GNU General Public License 
23  # along with this program; if not, write to the Free Software 
24  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
25   
26  ############################################################################### 
27   
28  import os 
29  import time 
30   
31  from .config import Config 
32  from .utils import warn, move 
33   
34  ############################################################################### 
35   
36   
37 -class UrgencyLog:
38 "Urgency Logger object" 39 40 __shared_state = {} 41
42 - def __init__(self, *args, **kwargs):
43 self.__dict__ = self.__shared_state 44 45 if not getattr(self, 'initialised', False): 46 self.initialised = True 47 48 self.timestamp = time.strftime("%Y%m%d%H%M%S") 49 50 cnf = Config() 51 if "Dir::UrgencyLog" in cnf: 52 # Create the log directory if it doesn't exist 53 self.log_dir = cnf["Dir::UrgencyLog"] 54 55 if not os.path.exists(self.log_dir) or not os.access(self.log_dir, os.W_OK): 56 warn("UrgencyLog directory %s does not exist or is not writeable, using /srv/ftp.debian.org/tmp/ instead" % (self.log_dir)) 57 self.log_dir = '/srv/ftp.debian.org/tmp/' 58 59 # Open the logfile 60 self.log_filename = "%s/.install-urgencies-%s.new" % (self.log_dir, self.timestamp) 61 self.log_file = open(self.log_filename, 'w') 62 63 else: 64 self.log_dir = None 65 self.log_filename = None 66 self.log_file = None 67 68 self.writes = 0
69
70 - def log(self, source, version, urgency):
71 "Log an event" 72 73 # Don't try and log if Dir::UrgencyLog is not configured 74 if self.log_file is None: 75 return 76 77 self.log_file.write(" ".join([source, version, urgency]) + '\n') 78 self.log_file.flush() 79 self.writes += 1
80
81 - def close(self):
82 "Close a Logger object" 83 # Don't try and log if Dir::UrgencyLog is not configured 84 if self.log_file is None: 85 return 86 87 self.log_file.flush() 88 self.log_file.close() 89 90 if self.writes: 91 new_filename = "%s/install-urgencies-%s" % (self.log_dir, self.timestamp) 92 move(self.log_filename, new_filename) 93 else: 94 os.unlink(self.log_filename)
95