Use specific python3 binary file
Hi, I have a python destination but I have to use a python3 that is not the system installed python3, in order to use a speficic set of libraries that can't be installed system wide. This alternative python3 is in a folder /apps/python3. How can I configure syslog-ng to use this alternative binary file? Thanks! Regards, Armando Mártires
Hi,
How can I configure syslog-ng to use this alternative binary file?
If you are using the Python destination (not the program() destination executing the python3 binary), then syslog-ng does not use the Python binary at all. The python() destination starts a separate thread inside syslog-ng instead, and uses the libpython library to interpret Python code. In case you have syslog-ng compiled with Python 3 support, you can specify which libpython to use with the LD_LIBRARY_PATH environment variable or with standard ldconfig configurations. For example: /apps/lib/libpython3.so --> LD_LIBRARY_PATH=/apps/lib A syslog-ng instance compiled with Python 2 support currently can't be configured to use Python 3, you have to recompile it from source in this case (./configure --enable-python --with-python=3, for example). The PKG_CONFIG_PATH envvar can be used to help the configure script find the appropriate path to libpython. -- László Várady
Thanks for your help, I will try to use the program() destination instead. Cheers, Armando Mártires On 10/23/2019 4:51 PM, László Várady (lvarady) wrote:
Hi,
How can I configure syslog-ng to use this alternative binary file?
If you are using the Python destination (not the program() destination executing the python3 binary), then syslog-ng does not use the Python binary at all.
The python() destination starts a separate thread inside syslog-ng instead, and uses the libpython library to interpret Python code.
In case you have syslog-ng compiled with Python 3 support, you can specify which libpython to use with the LD_LIBRARY_PATH environment variable or with standard ldconfig configurations. For example: /apps/lib/libpython3.so --> LD_LIBRARY_PATH=/apps/lib
A syslog-ng instance compiled with Python 2 support currently can't be configured to use Python 3, you have to recompile it from source in this case (./configure --enable-python --with-python=3, for example). The PKG_CONFIG_PATH envvar can be used to help the configure script find the appropriate path to libpython.
-- László Várady
Hi, I set up my destination in syslog-ng config file as follows: destination d_syslog2snmp { program("/apps/syslog-ng/syslog2snmp.py" template("<${PRI}>${DATE} ${HOST} ${MESSAGE}\n")); }; My Script is like this: #!/usr/bin/python3 while True: msg = input() f = open("/tmp/pysnmp.out","a+") f.write(f"{ line }") f.close() But I'm getting this in loop on my log file: Oct 24 17:56:37 lab-srv-slg-v01 syslog-ng[9934]: Child program exited, restarting; cmdline='/apps/syslog-ng/syslog2snmp.py', status='32256' I also tried to use a bash script exactly as the manual gives as an example but I get the same kind of error loop. Does any one have a clue on how to solve this? Regards, Armando Martires On 10/23/2019 4:51 PM, László Várady (lvarady) wrote:
Hi,
How can I configure syslog-ng to use this alternative binary file?
If you are using the Python destination (not the program() destination executing the python3 binary), then syslog-ng does not use the Python binary at all.
The python() destination starts a separate thread inside syslog-ng instead, and uses the libpython library to interpret Python code.
In case you have syslog-ng compiled with Python 3 support, you can specify which libpython to use with the LD_LIBRARY_PATH environment variable or with standard ldconfig configurations. For example: /apps/lib/libpython3.so --> LD_LIBRARY_PATH=/apps/lib
A syslog-ng instance compiled with Python 2 support currently can't be configured to use Python 3, you have to recompile it from source in this case (./configure --enable-python --with-python=3, for example). The PKG_CONFIG_PATH envvar can be used to help the configure script find the appropriate path to libpython.
-- László Várady
I did some further testing and is I start syslog-ng manualy with: /sbin/syslog-ng -F -p /var/run/syslogd.pid If I start with: systemctl start syslog-ng it fails. I'm running syslog-ng 3.24 on a Centos 7 linux machine. Seems like it's related with systemd... But i'm stuck here... Thanks four your help. Regards, Armando Martires On 10/24/2019 6:00 PM, Armando Martires wrote:
Hi,
I set up my destination in syslog-ng config file as follows:
destination d_syslog2snmp {
program("/apps/syslog-ng/syslog2snmp.py" template("<${PRI}>${DATE} ${HOST} ${MESSAGE}\n"));
};
My Script is like this:
#!/usr/bin/python3 while True:
msg = input() f = open("/tmp/pysnmp.out","a+") f.write(f"{ line }") f.close()
But I'm getting this in loop on my log file:
Oct 24 17:56:37 lab-srv-slg-v01 syslog-ng[9934]: Child program exited, restarting; cmdline='/apps/syslog-ng/syslog2snmp.py', status='32256'
I also tried to use a bash script exactly as the manual gives as an example but I get the same kind of error loop. Does any one have a clue on how to solve this?
Regards, Armando Martires
On 10/23/2019 4:51 PM, László Várady (lvarady) wrote:
Hi,
How can I configure syslog-ng to use this alternative binary file?
If you are using the Python destination (not the program() destination executing the python3 binary), then syslog-ng does not use the Python binary at all.
The python() destination starts a separate thread inside syslog-ng instead, and uses the libpython library to interpret Python code.
In case you have syslog-ng compiled with Python 3 support, you can specify which libpython to use with the LD_LIBRARY_PATH environment variable or with standard ldconfig configurations. For example: /apps/lib/libpython3.so --> LD_LIBRARY_PATH=/apps/lib
A syslog-ng instance compiled with Python 2 support currently can't be configured to use Python 3, you have to recompile it from source in this case (./configure --enable-python --with-python=3, for example). The PKG_CONFIG_PATH envvar can be used to help the configure script find the appropriate path to libpython.
-- László Várady
participants (2)
-
Armando Martires
-
László Várady (lvarady)