正文
本文记录了因为一个简单的日志需求,继而对linux环境下syslog、rsyslog、unix domain socket的学习。本文关注使用层面,并不涉及rsyslog的实现原理,感兴趣的读者可以参考rsyslog官网。另外,本文实验的环境实在debian8,如果是其他linux发行版本或者debian的其他版本,可能会稍微有些差异。
需求:
工作中有一个在Linux(debian8)环境下运行的服务器程序,用python语言实现,代码中有不同优先级的日志需要记录,开发的时候都是使用python的logging模块输出到文件,示例代码如下:
1 import logging, os 2 3 logger = None 4 def get_logger(): 5 global logger 6 if not logger: 7 logger = logging.getLogger('ServerLog') 8 logger.setLevel(logging.INFO) 9 filehandler = logging.FileHandler(os.environ['HOME'] + '/Server.log', encoding='utf8')10 filehandler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))11 logger.addHandler(filehandler)12 return logger13