несколько сценариев ведут к нескольким процессам. таким образом, вы неудачно создаете несколько объектов, возвращаемых функцией logger.__init__()
.
обычно у вас есть один скрипт, который создает регистратор и разные процессы,
но, насколько я понимаю, вам нравится, когда несколько сценариев регистрируются в одном месте.
если вы хотите, чтобы несколько процессов регистрировались в одном и том же месте назначения, я рекомендую использовать межпроцессное взаимодействие в качестве «именованных каналов» или иным образом использовать порт UDP / TCP для ведения журнала.
В Python также есть модули очереди для отправки (элементарной) записи журнала, которая будет записана в одной части (по сравнению с добавлением в файл несколькими процессами - это может привести к значениям от 111111 \ n и 22222 \ n до 11212121221 \ n \ n в файле)
иначе думать о именованных каналах ...
Фрагмент кода для сервера регистрации
Примечание: я просто предполагал регистрировать все как ошибку ...
import socket
import logging
class mylogger():
def __init__(self, port=5005):
log = logging.getLogger("output")
filelog = logging.FileHandler("output.log")
formatlog = logging.Formatter("%(asctime)s %(levelname)s %(message)s")
filelog.setFormatter(formatlog)
log.addHandler(filelog)
log.setLevel(logging.INFO)
self.log = log
UDP_IP = "127.0.0.1" # localhost
self.port = port
self.UDPClientSocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)
self.UDPClientSocket.bind((UDP_IP, self.port))
def pollReceive(self):
data, addr = self.UDPClientSocket.recvfrom(1024) # buffer size is 1024 bytes
print("received message:", data)
self.log.error( data )
pass
log = mylogger()
while True:
log.pollReceive()