An error occurred while loading the file. Please try again.
-
Commandre Benjamin authored08725034
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/bin/env python
# -*- coding: utf-8 -*-
import argparse
import logging
from logging.handlers import RotatingFileHandler
import signal
from contextlib import contextmanager
import inspect
import traceback
try:
import Constantes
except :
pass
class Fusion(argparse.Action):
def __init__(self, option_strings, dest, nargs=None, **kwargs):
super(Fusion, self).__init__(option_strings, dest, nargs, **kwargs)
def __call__(self, parser, namespace, values, option_string=None):
setattr(namespace, self.dest, ' '.join(values).lower())
class Log(object):
def __init__(self, dossier, nomFichier, niveau=None):
super(Log, self).__init__()
stack = inspect.stack()
nom_classe = stack[1][0].f_locals["self"].__class__.__name__
self.__logger__ = logging.getLogger(nomFichier)
if niveau is None:
try:
niveau = Constantes.NIVEAU_DEFAUT
except :
niveau = logging.DEBUG
self.__logger__.setLevel(niveau)
format_fichier = logging.Formatter('%(asctime)s :: %(levelname)s :: %(message)s', datefmt='%d-%m-%Y %H:%M:%S')
fichierLog = RotatingFileHandler("{0}/{1}.log".format(dossier, nomFichier), 'a', 1000000, 1)
fichierLog.setLevel(niveau)
fichierLog.setFormatter(format_fichier)
self.__logger__.addHandler(fichierLog)
format_console = logging.Formatter('%(asctime)s :: {0} :: %(levelname)s :: %(message)s'.format(nom_classe), datefmt='%d-%m-%Y %H:%M:%S')
console = logging.StreamHandler()
console.setLevel(niveau)
console.setFormatter(format_console)
self.__logger__.addHandler(console)
def info(self, message):
self.__logger__.info(message)
def debug(self, message):
self.__logger__.debug(message)
def warning(self, message):
self.__logger__.warning(message)
def error(self, message):
self.__logger__.error(message)
def critical(self, message):
self.__logger__.critical(message)
def exception(self, message):
self.__logger__.exception(message)
def close(self):
for handler in self.__logger__.handlers[:] :
handler.close()
self.__logger__.removeHandler(handler)
class TimeoutException(Exception): pass
@contextmanager
def limitation_temporelle(secondes):
def signal_handler(signum, frame):
raise TimeoutException
signal.signal(signal.SIGALRM, signal_handler)
signal.alarm(secondes)
try:
yield
finally:
signal.alarm(0)
# Utilisation :
#
# try:
# with limitation_temporelle(temps_en_seconde):
# appel_fonction()
# except TimeoutException:
# pass