Remote rsyslog server records the logs of python script, rsyslogpython
Ubuntu 14.04.1 LTS
Rsyslog server: 10.0.7.77
Python client: 10.0.2.122
[Rsyslog server]
1. Install rsyslog with apt-get
sudo apt-get install -y rsyslog
2. edit/etc/rsyslog. conf, uncomment this line
$ModLoad immark # provides --MARK-- message capability# provides UDP syslog reception$ModLoad imudp$UDPServerRun 514# provides TCP syslog reception$ModLoad imtcp$InputTCPServerRun 514
I will custom my log format, so comment this line:
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$template myFormat,"[%$NOW% %TIMESTAMP:8:15% %HOSTNAME%] %programname% %msg%\n"
Set "myFormat" for default tempalte
Ps: You can find more format default attributes at http://www.rsyslog.com/doc/property_replacer.html
$ActionFileDefaultTemplate myFormat
Create my log file:
$template DynaFile, "/var/log/falls-%$YEAR%-%$MONTH%-%$DAY%.log":programname,contains,"falls" -?DynaFile
First line define template named "DynaFile" path is/var /......
Second line means if programname contains "falls" then the logs will be recorded in "DynaFile" path.
3. Edit/etc/default/rsyslog, like this:
RSYSLOGD_OPTIONS=" -r514 -m 0"
4. restart rsyslog server
sudo service rsyslog restart
Check rsyslog network status:
sudo netstat -anpl | grep 514
If you can see 514 port for tcp and udp, it's successful.
[Client]
Creat my test. py
<pre name="code" class="python">#!/usr/bin/env python# encoding: utf-8import loggingimport logging.handlersimport randomdef test(): my_logger = logging.getLogger("falls.com") my_logger.setLevel(logging.DEBUG) handler = logging.handlers.SysLogHandler(address = ('10.0.7.77',514)) f = logging.Formatter('falls[10.0.0.1]: %(message)s') handler.setFormatter(f) my_logger.addHandler(handler)<span style="white-space:pre"></span>## Produce different log every time with random number for testing. i = random.randint(1,1000000) #my_logger.debug('This is a test remote log! %d' % i) my_logger.info('fuck: This is a test remote log! %d' % i)if __name__ = '__main__':<span style="white-space:pre"></span>test()
When run test. py, it write a log at rsyslog server:/var/log/falls-DATE.log, the content like this:
[2015-02-08 04:17:55 ip-10-0-2-122] falls fuck: This is a test remote log! 344963