Найти - Пользователи
Полная версия: Работа с logging
Начало » Python для новичков » Работа с logging
1
Apollo46
Следующая задача.

Дано:
Есть единая система работающая на нескольких машинах, на каждой машине ведется свой журнал логов(на каждой машине его формат одинаков). Все записи идут в хронологическом порядке.

Задача: написать программу которая будет из любого количества логов создавать один, при этом сохраняя хронологический порядок и будет иметь возможность сортировки по уровню важности (например если указать в конфиге error, то будут отображаться записи только с уровнем error и выше).
В качестве аргументов должны передаваться названия файлов а вывод через stdout(консоль).

Вопрос: какой путь избрать?

http://docs.python.org/howto/logging-cookbook.html#sending-and-receiving-logging-events-across-a-network

Я склоняюсь сделать через sockethandler(способ по ссылке выше). Верно размышляю? Или есть более элегантное решение?
Александр Кошелев
Apollo46
Вопрос: какой путь избрать?
Взять syslog-ng?
Apollo46
Александр Кошелев
В этом и вся соль, что надо свое написать.

Насколько я знаю, python не умеет из нескольких лог файлов собирать один обычным способом. Вот цитата из оф. документации:
Although logging is thread-safe, and logging to a single file from multiple threads in a single process is supported, logging to a single file from multiple processes is not supported, because there is no standard way to serialize access to a single file across multiple processes in Python. If you need to log to a single file from multiple processes, one way of doing this is to have all the processes log to a SocketHandler, and have a separate process which implements a socket server which reads from the socket and logs to file. (If you prefer, you can dedicate one thread in one of the existing processes to perform this function.) The following section documents this approach in more detail and includes a working socket receiver which can be used as a starting point for you to adapt in your own applications.

Так что кроме sockethandler и socketserver не вижу путей. Помогите пожалуйста если кто-то знает. Нужно сделать как можно быстрее.
Александр Кошелев
Apollo46
В этом и вся соль, что надо свое написать.
Что это значит? Вам решение нужно или что?
Apollo46
Может кто-нибудь подсказать, как лучше решить эту задачу? Пожалуйста.
regall
Apollo46, я вот не понимаю, вам сессию сдать или почему не подходит вариант с сислогом, который уже все это дело умеет?
bw
> Задача: написать программу которая будет из любого количества логов создавать один
> Вопрос: какой путь избрать?
> Я склоняюсь сделать через sockethandler

А при чём тут сокеты? Открываем файлы, парсим и собираем налету (без накопления в памяти) в один поток. Какой тут может быть путь? logging для протоколирования, не для последующей обработки протоколов.

..bw
Lexander
bw
Если логи нужно анализировать в реалтайм или приближенно к этому, то использование доп. хэндлера в самый раз.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB