Журнал производится больше чем из одного сценария

в Python (2.x):

import sys

pat = 'sss'

for line in open(sys.argv[1]):
    if not pat in line:
        print line,
        continue
    case_nr = line.split(pat + ' case-', 1)[1].split('-')[0]
    print '**something about case{}**'.format(case_nr)

Call с Python Script_name.py input.txt> output.txt

0
30.04.2015, 14:08
1 ответ

Я лично считаю, что одно самые первые вещи, которые вы должны сделать в сценарии или приложении командной строки, или приложение, установлена ​​система регистрации. Просто с парой повторных использованных линий вы можете войти во всех ваших приложениях Python и даже использовать различные уровни отладки :).

Я не буду базовым входить в систему в записи STDOUT в файлы с TEE, просто войдите в STDOUT, так и ваш канал регистрации. Я предполагаю, что вы можете изменить ваши сценарии Python, все ниже относится к этой ситуации. ( Прокрутите вниз для «Использование ответа TEE» :).

В Python вы можете использовать модуль для ведения журнала (проверьте регистрацию хорма в официальной документации Python: https://docs.cython.org/2/howto/logging.html ) Но к сожалению разные Процессы не могут написать в один и тот же файл (могут быть разные проталки одинакового процесса).

Итак, в этом случае вы описываете, я думаю, что базовый случай будет в системе Syslog, либо с библиотекой регистрации, либо с библиотекой Syslog ( https://docs.cython.org/2 /library/syslog.html).

Вы можете войти в локальную регистрацию Syslog. * Facility на все приложения и дайте Syslog (Rsyslog в моем случае), чтобы написать в файл:

local0.*                /var/log/myapp.log

Лучше всего в этой системе является то, что вы даже можете ввести удаленные серверы системного журнала на Различные машины, не только в одном выполнении приложений.

PS: не забудьте установить политику /etc/logrotate.d/myapp, чтобы повернуть файлы журнала приложений!

Вариант TEE

Если вам все еще нужно использовать Tee , вы пытались использовать флаг -A для 2-го и 3-го процесса? Как указано в http://docstore.mik.ua/orelly/unix/upt/ch13_10.htm :

Команда Tee (13.9) записывает свой стандартный ввод в файл и Пишет тот же текст на свой стандартный выход. Возможно, вы захотите собрать Вывод нескольких команд и тройник их все в тот же файл, один после Другая. Очевидный способ сделать это с вариантом-a

$ Command | Tee Teefile

$ Другой-команда | Tee-a teefile

$ a-tart-command | Tee-a teefile

3
28.01.2020, 02:28

Теги

Похожие вопросы