Remote rsyslog server records the logs of python script, rsyslogpython

Source: Internet
Author: User
Tags rsyslog

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



Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.