2016-04-21 7 views
0

Ich verwende SysLogHandler in meiner Protokollierungskonfigurationsdatei."Falscher Protokolltyp für Socket" bei Verwendung von socket.SOCK_STREAM in Protokollierungskonfiguration

Als rsyslog auf meinem Linux-Box läuft, möchte ich socket.SOCK_STREAM als socktype Stichwort Argument der SysLogHandler Instanz verwenden. Die documentation sagt in der Tat:

To open a TCP socket (for use with the newer syslog daemons such as rsyslog), specify a value of socket.SOCK_STREAM.

Aber wenn ich den Handler hinzufügen, wie folgt aus:

log.addHandler(logging.handlers.SysLogHandler(address='/dev/log', 
              facility='mathmaker', 
              socktype=socket.SOCK_STREAM)) 

ich diesen Fehler:

File "/home/zezo/dev/myapp/myapp", line 52, in <module> 
    socktype=socket.SOCK_STREAM)) 
    File "/usr/lib/python3.4/logging/handlers.py", line 803, in __init__ 
    self._connect_unixsocket(address) 
    File "/usr/lib/python3.4/logging/handlers.py", line 820, in _connect_unixsocket 
    self.socket.connect(address) 
OSError: [Errno 91] Protocol wrong type for socket 

Obwohl es wie rsyslog scheint hört/dev/log: lsof | grep rsyslog zeigt:

rsyslogd 8090   syslog 0u  unix 0xffff8800b413ce00  0t0 2739240 /dev/log 

Antwort

0

Sieht aus, als wäre es nicht möglich, socket.SOCK_STREAM für einen Unix-Socket zu verwenden.

Ich glaube, ich die doc zu schnell gelesen haben, wie:

for use with the newer syslog daemons such as rsyslog

ist nicht bedeutet rsyslog konfiguriert TCP-Sockets zu verwenden (nur, dass es sein könnte).