python: для проверки отправки журналов на Syslog Server - PullRequest
0 голосов
/ 29 апреля 2020

, пожалуйста, помогите мне, как отправить python журналы сценариев на сервер syslog (продукт syslog-ng), я уже попробовал метод ниже ... у него есть два подхода. один с 'SysLogHandler', а другой с 'SocketHandler'

import logging
import logging.handlers
import socket

my_logger = logging.getLogger('MyLogger')
my_logger.setLevel(logging.DEBUG)

handler = logging.handlers.SysLogHandler(address=('10.10.11.11', 611), socktype=socket.SOCK_STREAM)
#handler = logging.handlers.SocketHandler('10.10.11.11', 611)

my_logger.addHandler(handler)

my_logger.debug('this is debug')
my_logger.critical('this is critical')

результат: для SysLogHandler

[ansible@localhost ~]$ python test.py
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    handler = logging.handlers.SysLogHandler(address=('10.10.11.11', 611), socktype=socket.SOCK_STREAM)
  File "/usr/lib64/python3.6/logging/handlers.py", line 847, in __init__
    raise err
  File "/usr/lib64/python3.6/logging/handlers.py", line 840, in __init__
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused #THIS IS OK for me since server unreachable.
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
  File "/usr/lib64/python3.6/logging/__init__.py", line 1946, in shutdown
    h.close()
  File "/usr/lib64/python3.6/logging/handlers.py", line 894, in close
    self.socket.close()
AttributeError: 'SysLogHandler' object has no attribute 'socket'

result: SocketHandler ==> No output .. я не уверен, работает ли он или нет .

Я не уверен, как правильно отправлять журналы на сервер syslog через TCP-порт. Я использовал syslogHandler и SocketHandler.

syslogHandler:, используя syslogHandler Я получаю ConnectionRefusedError, поскольку мой удаленный сервер недоступен, вероятно, я буду пытаться пользователем, кроме метода. Но я не уверен, почему я получаю AttributeError: 'SysLogHandler' object has no attribute 'socket'

SocketHandler: Python на странице обработчика модуля протоколирования написано этот класс используется для отправки журналов на удаленный сервер по протоколу TCP. Но я не вижу никаких выходных данных и не уверен, является ли это правильным подходом для отправки журналов на сервер syslog.

, пожалуйста, помогите ..

заранее спасибо.

...