2017-01-16 2 views
0

Я написал сценарий, который собирает журналы событий из облачного экрана, записывает их в два файла и затем отправляет содержимое каждого файла по почте. Как я хочу, чтобы получить два сообщения электронной почты, каждый лесозаготовители имеет другой тип журналов, я создал два лесорубов:Два обработчика файлов двух разных регистраторов получают одинаковый контент

logLevel = logging.INFO 
doWait = object() 
if os.path.exists ('.debug'): 
    logLevel = logging.DEBUG 
logger1 = logging.getLogger() 
logger2 = logging.getLogger() 
logger1.setLevel(logLevel) 
logger2.setLevel(logLevel) 
formatter = logging.Formatter('%(asctime)s :: %(levelname)s :: %(message)s') 
fileHandler1 = os.path.join('/tmp/', 'error-admin-' + datetime.datetime.utcnow().strftime('%Y-%m-%d') + '.log') 
fileHandler2 = os.path.join('/tmp/', 'error-user-' + datetime.datetime.utcnow().strftime('%Y-%m-%d') + '.log') 
fh1 = logging.handlers.RotatingFileHandler(fileHandler) 
fh2 = logging.handlers.RotatingFileHandler(fileHandler2) 
fh1.setLevel(logLevel) 
fh2.setLevel(logLevel) 
fh1.setFormatter(formatter) 
fh2.setFormatter(formatter) 
logger1.addHandler(fh1) 
logger2.addHandler(fh2) 

в основном, я называю такие функции, как, что:

function1(arg1,arg2,logger1) 
function2(arg1,arg2,logger2) 

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

+0

Вы делаете точно то же самое с вашими двумя лесорубов, почему это должно быть две разные результаты? – iFlo

+0

у каждого регистратора есть другой файл-манипулятор, и когда я вызываю функции, которые собирают события, я указываю, в каком файле я хочу писать журналы, вызывая eather logger1 или logger2 @iFlo. – JavaQueen

ответ

1

Это происходит потому, что logger1 и logger2 как точка в корняLogger внизу.

От docs: Multiple calls to getLogger() with the same name will always return a reference to the same Logger object.

Вам понадобятся два отдельных Logger объектов:

logger1 = logging.getLogger('error-admin') 
logger2 = logging.getLogger('error-user') 
+0

Спасибо, это было – JavaQueen

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