Commit 30518bfa91f3e70b9aefbe22f3d5ff6f1221b626
1 parent
edd879ef1e
Exists in
master
gestion des erreurs
Showing 1 changed file with 47 additions and 14 deletions
logrotate.py
View file @
30518bf
... | ... | @@ -30,6 +30,18 @@ |
30 | 30 | :rtype: datetime.datetime |
31 | 31 | """ |
32 | 32 | return dt.datetime.now().isoformat() |
33 | + | |
34 | +def cleanList(LIST = [], LISTERR = []): | |
35 | + """ | |
36 | + Supprime de la liste ``LIST`` tous les fichiers | |
37 | + correspondant à ceux en erreur présent dans la liste ``LISTERR`` | |
38 | + | |
39 | + :return: Une nouvelle liste de fichiers nettoyées | |
40 | + :rtype: list | |
41 | + """ | |
42 | + for ERR in LISTERR: | |
43 | + LIST = list(filter(lambda f: not f.startswith(ERR), LIST)) | |
44 | + return LIST | |
33 | 45 | |
34 | 46 | def log(FLOG, TXT, FILE, MSG): |
35 | 47 | """ |
36 | 48 | |
37 | 49 | |
... | ... | @@ -71,16 +83,20 @@ |
71 | 83 | delFile(os.path.join(F, FILE), FLOG) |
72 | 84 | return list(set(LIST) - set(LISTDEL)) |
73 | 85 | |
74 | -def incrementZipFile(LIST, FLOG): | |
86 | +def incrementZipFile(LIST, FLOG, LISTERR = []): | |
75 | 87 | """ |
76 | 88 | Incrémente les archives ZIP jusqu'à ``NBARCHIVE`` |
77 | 89 | Suppression de l'archive ZIP dont son index est supérieur |
78 | 90 | ou égal à ``NBARCHIVE`` |
91 | + | |
92 | + :return: Une liste de fichiers en erreur | |
93 | + :rtype: list | |
79 | 94 | """ |
80 | 95 | LISTLOG = listLog(LIST, '.log') |
81 | 96 | LISTZIP = listLog(LIST, '.zip') |
82 | 97 | for f in LISTLOG: |
83 | 98 | WLIST = sorted(list(filter(lambda x: x.startswith(f), LISTZIP)), key=lambda y: int(y.split('.')[2]), reverse=True) |
99 | + ERR = False | |
84 | 100 | for FILE in WLIST: |
85 | 101 | TF = FILE.split('.') |
86 | 102 | IDX = int(TF[2]) |
87 | 103 | |
88 | 104 | |
89 | 105 | |
90 | 106 | |
91 | 107 | |
92 | 108 | |
93 | 109 | |
... | ... | @@ -91,25 +107,39 @@ |
91 | 107 | TF[2] = str(IDX + 1) |
92 | 108 | NEWFILE = os.path.join(F, '.'.join(TF)) |
93 | 109 | try: os.rename(OLDFILE, NEWFILE) |
94 | - except: log(FLOG, TXT, OLDFILE, '{NEWFILE} ***KO***'.format(NEWFILE=NEWFILE)) | |
110 | + except: | |
111 | + ERR = True | |
112 | + LISTERR.append(f) | |
113 | + log(FLOG, TXT, OLDFILE, '{NEWFILE} ***KO***'.format(NEWFILE=NEWFILE)) | |
95 | 114 | else: log(FLOG, TXT, OLDFILE, '{NEWFILE}'.format(NEWFILE=NEWFILE)) |
115 | + finally: | |
116 | + if ERR: break | |
117 | + return LISTERR | |
96 | 118 | |
97 | -def log_0ToZip(LIST, FLOG): | |
119 | +def log_0ToZip(LIST, FLOG, LISTERR = []): | |
98 | 120 | """ |
99 | 121 | On écrit tout le contenu des fichiers LOG *.log.0 |
100 | 122 | dans de nouveaux fichiers ZIP *.log.1.zip |
101 | 123 | On supprime ensuite tous les fichiers *.log.0 |
124 | + | |
125 | + :return: Une liste de fichiers en erreur | |
126 | + :rtype: list | |
102 | 127 | """ |
103 | 128 | LISTLOG0 = listLog(LIST, '.log.0') |
104 | 129 | for FILE in LISTLOG0: |
130 | + ERR = False | |
105 | 131 | with open(os.path.join(F, FILE), mode='r', encoding='UTF-8') as f1: |
106 | - BASE = '.'.join(FILE.split('.')[:-1]) + '.1' | |
132 | + BASE = FILE[:-1] + '1' | |
107 | 133 | ZIP = os.path.join(F, BASE + '.zip') |
108 | 134 | with zipfile.ZipFile(ZIP, 'w', compression=zipfile.ZIP_DEFLATED) as f2: |
109 | 135 | try: f2.writestr(BASE, f1.read().encode('UTF-8')) |
110 | - except: log(FLOG, TXT3, os.path.join(F, FILE), '{NEWFILE} ***KO***'.format(NEWFILE=ZIP)) | |
136 | + except: | |
137 | + ERR = True | |
138 | + LISTERR.append(FILE[:-2]) | |
139 | + log(FLOG, TXT3, os.path.join(F, FILE), '{NEWFILE} ***KO***'.format(NEWFILE=ZIP)) | |
111 | 140 | else: log(FLOG, TXT3, os.path.join(F, FILE), '{NEWFILE}'.format(NEWFILE=ZIP)) |
112 | - delFile(os.path.join(F, FILE), FLOG) | |
141 | + if not ERR: delFile(os.path.join(F, FILE), FLOG) | |
142 | + return LISTERR | |
113 | 143 | |
114 | 144 | def logTo0(LIST, FLOG): |
115 | 145 | """ |
... | ... | @@ -126,12 +156,13 @@ |
126 | 156 | with open(NEWFILE, mode='w', encoding='UTF-8') as f2: |
127 | 157 | f2.write(f1.read()) |
128 | 158 | except: log(FLOG, TXT, OLDFILE, '{NEWFILE} ***KO***'.format(NEWFILE=NEWFILE)) |
129 | - else: log(FLOG, TXT, OLDFILE, '{NEWFILE}'.format(NEWFILE=NEWFILE)) | |
130 | - try: | |
131 | - with open(OLDFILE, mode='w', encoding='UTF-8') as f1: | |
132 | - f1.write('') | |
133 | - except: log(FLOG, TXT2, OLDFILE, 'KO') | |
134 | - else: log(FLOG, TXT2, OLDFILE, 'OK') | |
159 | + else: | |
160 | + log(FLOG, TXT, OLDFILE, '{NEWFILE}'.format(NEWFILE=NEWFILE)) | |
161 | + try: | |
162 | + with open(OLDFILE, mode='w', encoding='UTF-8') as f1: | |
163 | + f1.write('') | |
164 | + except: log(FLOG, TXT2, OLDFILE, 'KO') | |
165 | + else: log(FLOG, TXT2, OLDFILE, 'OK') | |
135 | 166 | |
136 | 167 | def main(): |
137 | 168 | """ |
... | ... | @@ -144,8 +175,10 @@ |
144 | 175 | with open(os.path.join(F, LOG), mode='a', encoding='UTF-8') as FLOG: |
145 | 176 | LIST = removeUnusedFiles(FLOG) |
146 | 177 | LIST.remove(LOG) # On supprime de la liste le fichier de LOG du script |
147 | - incrementZipFile(LIST, FLOG) | |
148 | - log_0ToZip(LIST, FLOG) | |
178 | + LISTERR = incrementZipFile(LIST, FLOG) | |
179 | + LIST = cleanList(LIST, LISTERR) | |
180 | + LISTERR = log_0ToZip(LIST, FLOG, LISTERR) | |
181 | + LIST = cleanList(LIST, LISTERR) | |
149 | 182 | logTo0(LIST, FLOG) |
150 | 183 | |
151 | 184 | if __name__ == '__main__': |