2013-02-26 2 views
3

Я работаю над большой базой кода, которая использует инструкции печати для ведения журнала, а не для ведения журнала на питоне. Мне интересно, рекомендуется ли конвертировать все эти операторы печати в вызовы logging.info? Многие из этих отпечатков распространяются по нескольким строкам, и поэтому любое решение должно обрабатывать эти случаи и, надеюсь, будет поддерживать форматирование.конвертировать операторы печати python в журнал

Я изучил веревку python, но у меня нет возможности конвертировать вызовы в оператор, например print, в вызов функции.

ответ

3

Вы можете использовать только 2to3 и применить исправление для печати -> функция печати.

2to3 --fix=print [yourfiles] 

Это должно автоматически обрабатывать все эти странные случаи, а затем преобразование функций печати в функцию протоколирования должно быть просто находка и заменить, например, с sed.

+0

Бьюсь об заклад, вы можете просто изменить 'lib2to3', чтобы добавить пользовательский фиксатор. Это может быть более простым. – nneonneo

+0

Это выглядит как идеальное решение. Благодаря! –

+1

Это может помочь кому-то, 2to3 tool -w переключиться на запись изменений, команда «2to3 --fix = print -w». Также инструмент 2to3 может быть установлен как часть пакета python-tools. Если вы используете yum, тогда 'yum install python-tools' выполняет эту работу. – opensourcegeek

0

просто добавьте эту строку до начала кода, и он будет регистрировать все, что он печатает. Я думаю, вы ищете что-то подобное.

import logging 
import sys 

class writer : 
    def __init__(self, *writers) : 
     self.writers = writers 

    def write(self, text) : 
     logging.warning(text) 


saved = sys.stdout 
sys.stdout = writer(sys.stdout) 


print "There you go." 
print "There you go2." 
+0

-1 это kludge, и не хватает реальных причин для того, чтобы в конечном итоге захотеть изменить печать на протоколирование (такие функции, как вращение журнала, уровни ведения журнала и т. Д.). вызов logging.info() _more_, чем просто печать в файл. – wim

 Смежные вопросы

  • Нет связанных вопросов^_^