Generate a new log-file with a default header. Raises RuntimeError if the log has already been started
(self, logfname=None, loghead=None, logmode=None,
log_output=False, timestamp=False, log_raw_input=False)
| 66 | logmode = property(_get_mode,_set_mode) |
| 67 | |
| 68 | def logstart(self, logfname=None, loghead=None, logmode=None, |
| 69 | log_output=False, timestamp=False, log_raw_input=False): |
| 70 | """Generate a new log-file with a default header. |
| 71 | |
| 72 | Raises RuntimeError if the log has already been started""" |
| 73 | |
| 74 | if self.logfile is not None: |
| 75 | raise RuntimeError('Log file is already active: %s' % |
| 76 | self.logfname) |
| 77 | |
| 78 | # The parameters can override constructor defaults |
| 79 | if logfname is not None: self.logfname = logfname |
| 80 | if loghead is not None: self.loghead = loghead |
| 81 | if logmode is not None: self.logmode = logmode |
| 82 | |
| 83 | # Parameters not part of the constructor |
| 84 | self.timestamp = timestamp |
| 85 | self.log_output = log_output |
| 86 | self.log_raw_input = log_raw_input |
| 87 | |
| 88 | # init depending on the log mode requested |
| 89 | isfile = os.path.isfile |
| 90 | logmode = self.logmode |
| 91 | |
| 92 | if logmode == 'append': |
| 93 | self.logfile = io.open(self.logfname, 'a', encoding='utf-8') |
| 94 | |
| 95 | elif logmode == 'backup': |
| 96 | if isfile(self.logfname): |
| 97 | backup_logname = self.logfname+'~' |
| 98 | # Manually remove any old backup, since os.rename may fail |
| 99 | # under Windows. |
| 100 | if isfile(backup_logname): |
| 101 | os.remove(backup_logname) |
| 102 | os.rename(self.logfname,backup_logname) |
| 103 | self.logfile = io.open(self.logfname, 'w', encoding='utf-8') |
| 104 | |
| 105 | elif logmode == 'global': |
| 106 | self.logfname = os.path.join(self.home_dir,self.logfname) |
| 107 | self.logfile = io.open(self.logfname, 'a', encoding='utf-8') |
| 108 | |
| 109 | elif logmode == 'over': |
| 110 | if isfile(self.logfname): |
| 111 | os.remove(self.logfname) |
| 112 | self.logfile = io.open(self.logfname,'w', encoding='utf-8') |
| 113 | |
| 114 | elif logmode == 'rotate': |
| 115 | if isfile(self.logfname): |
| 116 | if isfile(self.logfname+'.001~'): |
| 117 | old = glob.glob(self.logfname+'.*~') |
| 118 | old.sort() |
| 119 | old.reverse() |
| 120 | for f in old: |
| 121 | root, ext = os.path.splitext(f) |
| 122 | num = int(ext[1:-1])+1 |
| 123 | os.rename(f, root+'.'+repr(num).zfill(3)+'~') |
| 124 | os.rename(self.logfname, self.logfname+'.001~') |
| 125 | self.logfile = io.open(self.logfname, 'w', encoding='utf-8') |