Commit a537f5f0fbc215f12fdeb66e005e8e1dcb56e7e4
1 parent
6534e77c
Exists in
master
and in
1 other branch
Implementa log do exception da análise sintática
Showing
2 changed files
with
45 additions
and
8 deletions
Show diff stats
src/PortGlosa.py
... | ... | @@ -16,7 +16,8 @@ tradutor = TraduzSentencas() |
16 | 16 | dicionario = LerDicionarios() |
17 | 17 | taxas = [] |
18 | 18 | |
19 | -def traduzir(texto, threads=False, taxa_qualidade=False): | |
19 | +def traduzir(texto, log=None, threads=False, taxa_qualidade=False): | |
20 | + tradutor.set_level(log) if log != None else tradutor.desativar_logging() | |
20 | 21 | if texto.isspace() or texto == "": |
21 | 22 | return "ESCOLHER TEXTO CERTO" |
22 | 23 | ... | ... |
src/TraduzSentencas.py
... | ... | @@ -9,8 +9,12 @@ |
9 | 9 | import alexp |
10 | 10 | from AplicaRegras import * |
11 | 11 | import logging |
12 | +import logging.handlers | |
12 | 13 | import traceback |
14 | +import subprocess | |
13 | 15 | import re, string |
16 | +import getopt | |
17 | +import sys | |
14 | 18 | |
15 | 19 | class TraduzSentencas(object): |
16 | 20 | '''Realiza a tradução do texto em português para glosa |
... | ... | @@ -20,10 +24,8 @@ class TraduzSentencas(object): |
20 | 24 | '''Instancia os aplicadores de regras e sinônimos. |
21 | 25 | ''' |
22 | 26 | self.aplic_regras = AplicaRegras() |
23 | - #logging.basicConfig(filename='/tmp/vlibras-translate.log', | |
24 | - # format='%(asctime)s - %(levelname)s:\n\n%(message)s\n\n\n##############################################\n\n', | |
25 | - # level=logging.ERROR) | |
26 | - | |
27 | + self.check_level() | |
28 | + | |
27 | 29 | def iniciar_traducao(self, sentenca, taxa=False): |
28 | 30 | '''Metódo responsável por executar todos componentes necessários para a geração da glosa. |
29 | 31 | ''' |
... | ... | @@ -31,12 +33,12 @@ class TraduzSentencas(object): |
31 | 33 | has_sintatica = True |
32 | 34 | analise_sintatica = alexp.run(sentenca) |
33 | 35 | except Exception as ex: |
34 | - #self.salvar_log(str(traceback.format_exc())) | |
36 | + self.salvar_log(str(traceback.format_exc())) | |
35 | 37 | analise_sintatica = None |
36 | 38 | has_sintatica = False |
37 | 39 | |
38 | 40 | analise_morfologica = alexp.getAnaliseMorfologica() |
39 | - | |
41 | + | |
40 | 42 | if (isinstance(analise_sintatica,type(None))): |
41 | 43 | regras_aplicadas = self.aplic_regras.aplicar_regras_morfo(analise_morfologica) |
42 | 44 | else: |
... | ... | @@ -59,7 +61,41 @@ class TraduzSentencas(object): |
59 | 61 | def salvar_log(self, erro): |
60 | 62 | '''Salva traceback de uma excessão do analisador sintático |
61 | 63 | ''' |
62 | - logging.error(erro) | |
64 | + logger = logging.getLogger('error-feedback') | |
65 | + logger.propagate = False | |
66 | + logger.error(erro) | |
67 | + | |
68 | + def criar_logger_error(self): | |
69 | + error_log = logging.getLogger('error-feedback') | |
70 | + error_log.setLevel(logging.ERROR) | |
71 | + ##print os.path.dirname(__file__) -- Salvar no direitorio do arquivo .py? | |
72 | + error_handler = logging.handlers.RotatingFileHandler('/var/tmp/vlibras-translate.log', maxBytes=1024, backupCount=5) | |
73 | + formatter = logging.Formatter('%(asctime)s - %(levelname)s:\n\n%(message)s\n\n\n##############################################\n\n') | |
74 | + error_handler.setFormatter(formatter) | |
75 | + error_log.addHandler(error_handler) | |
76 | + | |
77 | + def check_level(self): | |
78 | + for opt in sys.argv[1:]: | |
79 | + if "--log" in opt: | |
80 | + self.set_level(opt[6:]) | |
81 | + return | |
82 | + self.desativar_logging() | |
83 | + | |
84 | + def set_level(self, level): | |
85 | + numeric_level = getattr(logging, level.upper(), None) | |
86 | + if not isinstance(numeric_level, int): | |
87 | + raise ValueError('Nível de log inválido: %s' % level) | |
88 | + logging.disable(logging.NOTSET) | |
89 | + logging.getLogger().setLevel(numeric_level) | |
90 | + if numeric_level == 40 or numeric_level == 10: | |
91 | + self.criar_logger_error() | |
92 | + | |
93 | + def desativar_logging(self): | |
94 | + logging.disable(logging.DEBUG) | |
95 | + logging.disable(logging.INFO) | |
96 | + logging.disable(logging.WARNING) | |
97 | + logging.disable(logging.ERROR) | |
98 | + logging.disable(logging.CRITICAL) | |
63 | 99 | |
64 | 100 | def gerar_metrica_qualidade(self, lista): |
65 | 101 | #TODO: resolver path do arquivo | ... | ... |