linux python syslog,Centos下python 对syslog重写进行日志记录
在Linux 环境下,python自带一个syslog的模块可以进行日志记录。python可以利用logging模块来重写syslog,这样就可以自定义写入文件的文件名。如果不做配置则直接写入到/var/log/message文件里。
首先先写log.py,代码如下:
importosimportsysimportsyslogimporttypesimporttracebackfrom datetime importdatetimeimportlogging as _logging
LOGFILE_ENABLE = True
classDummyLogger(object):defdebug(self, msg):pass
definfo(self, msg):pass
defwarning(self, msg):pass
deferror(self, msg):pass
classCombinedLogger(object):def __init__(self, id):
self.id=idifLOGFILE_ENABLE:
self.logger=_logging.getLogger(id)else:
self.logger=DummyLogger()defdebug(self, msg):
syslog.openlog(self.id, syslog.LOG_PID)
syslog.syslog(syslog.LOG_DEBUG, msg)pass
definfo(self, msg):try:
syslog.openlog(self.id, syslog.LOG_PID)
syslog.syslog(syslog.LOG_INFO, msg)exceptTypeError:print 'Unicode Error', type(msg), msgprint msg.encode('utf8')
self.logger.info(msg)pass
defwarning(self, msg):
syslog.openlog(self.id, syslog.LOG_PID)
syslog.syslog(syslog.LOG_WARNING, msg)pass
deferror(self, e):
syslog.openlog(self.id, syslog.LOG_PID)
ex, msg, stack=sys.exc_info()
text= ['Exception: %s, Message: %s' % (ex, msg)] +traceback.format_tb(stack)
syslog.syslog(syslog.LOG_ERR,'\n'.join(text))pass
classLoggerWrapper(object):defgetLogger(self, id):returnCombinedLogger(id)
logging= LoggerWrapper()
测试代码write_log.py如下:
importsyslogimportdatetimeimportloggingimporttimeimportthreadingimportosfrom log importlogging as self_loggingimportconfig
logger= self_logging.getLogger('python')defwrite_log_func():
now =datetime.datetime.now()
logger.info("It's time now: {}".format(now))defwrite_sign_log(index):
path= '/home/xxx/test.log'logging.basicConfig(filename=path, filemode='w')
logging.info("row:{}".format(index))if __name__ == '__main__':
i= 1
whileTrue:
t_list=[]
tt_list=[]for i in xrange(40000):
t= threading.Thread(target=write_log_func, args=())
t_list.append(t)
for t1 int_list:
t1.start()
for t2 int_list:
t2.join()
print 'log is written'time.sleep(40)
最后对/etc/syslog.conf进行配置
!python*.* /var/log/python.log
指定测试脚本中的日志写入到那个目录文件下。
可能会遇到得错误:
1、日志丢失,在写入日志时,只有一部分日志写进去了,查看meessage文件,发现有这样得错误:
imuxsock lost 47 messages from pid 2002 due to rate-limiting
imuxsock begins to drop messages from pid 2002 due to rate-limiting
这种情况出现说明syslog的配置记录超过最大值,修改syslog的配置文件来解决。
修改配置文件/etc/syslog.config,在其中对以下两个参数进行设置
echo '$SystemLogRateLimitInterval 60' >> /etc/rsyslog.conf
echo'$SystemLogRateLimitBurst 3000' >> /etc/rsyslog.conf
其中的数字根据实际情况可以做改变。第一条:为设定的限制的时间间隔大小,第二条:为在设定的限制的时间间隔内,最多输出的log信息数量。
上面的配置表示在每一个60s时间间隔内,如果超过3000条的log信息将会被去丢掉。如果不希望有丢失则直接可设置下面这个参数即可:
$SystemLogRateLimitInterval 0
设置成功后,重启rsyslog即可service rsyslog restart 。
linux python syslog,Centos下python 对syslog重写进行日志记录相关推荐
- 手机怎么下载python并安装-CentOS下python的下载及安装
针对" CentOS下python的下载及安装 "的问题,下面由IT产品经理-陆亦晓为您解答: Python这门编程语言在数据分析.数据发掘以及服务端开发等方面都有非常好的使用,我 ...
- centos下python编程工具_CentOS下python的下载及安装
针对" CentOS下python的下载及安装 "的问题,下面由IT产品经理-陆亦晓为您解答: Python这门编程语言在数据分析.数据发掘以及服务端开发等方面都有非常好的使用,我 ...
- python 下载及安装-CentOS下python的下载及安装
针对" CentOS下python的下载及安装 "的问题,下面由IT产品经理-陆亦晓为您解答: Python这门编程语言在数据分析.数据发掘以及服务端开发等方面都有非常好的使用,我 ...
- 【Linux笔记】CentOS下找不到eth0设备的解决方法
[Linux笔记]CentOS下找不到eth0设备的解决方法 参考文章: (1)[Linux笔记]CentOS下找不到eth0设备的解决方法 (2)https://www.cnblogs.com/ly ...
- [Python+Anaconda] 查看Python、Anaconda下python、CUDA、函数库的版本
查看Python.Anaconda下Python.CUDA.函数库的版本 前言 第三方库(比如Pytorch)要依赖Python版本,CUDA版本,对于不同的版本组合,会有不同的安装命令. 这就要求我 ...
- python log文件如何不写入syslog_Centos下python 对syslog重写进行日志记录
在Linux 环境下,python自带一个syslog的模块可以进行日志记录.python可以利用logging模块来重写syslog,这样就可以自定义写入文件的文件名.如果不做配置则直接写入到/va ...
- linux中python编译器_linux下python编译器
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! linux下默认系统自带python2.6的版本,这个版本被系统很多程序所依赖, ...
- linux 切换python版本_Linux下python默认版本切换成替代版本(示例代码)
当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件.你可以按照以下方法使用 ls 命令来查看你的系 ...
- linux开机自启动python脚本_Linux下Python脚本自启动和定时启动的详细步骤
一.Python开机自动运行 假如Python自启动脚本为 auto.py .那么用root权限编辑以下文件: sudo vim /etc/rc.local 如果没有 rc.local 请看 这篇文章 ...
最新文章
- 挑战杯科展上的智能车作品
- 分享一个MD5加密的工具类
- Calc3: Multiple Integrals
- 字节流 system.in
- NIO原理及案例使用
- 强如 Disruptor 也发生内存溢出?
- c语言lnk1168无法打开exe,跪求大佬帮帮看看LINK : fatal error LNK1168: 无法打开 F:\windows程序设计\窗口\......
- face alignment by 3000 fps系列学习总结
- 线性代数二之矩阵加速DP——数学作业,Arc of Dream
- ipywidgets_未来价值和Ipywidgets
- MongoDB 常用运算符
- 微信开发学习日记(一):快速阅读5本书,掌握整体背景
- python处理json文件_python读取json文件转成excel
- jQuery-实例方法
- 仿XP系统的任务栏菜单
- Python学习手册之类和继承
- QT Opencv 抽奖系统
- win7计算机usb解除禁用,win7
- SPSS25 软件安装教程(附带网盘资源)
- Could not resolve dependencies for project
热门文章
- webview与js交互
- C语言进行网站开发之cgi
- PowerDesigner将PDM导出生成WORD文档
- Mysql数据类型之浮点与二进制型数据使用案例总结
- supersocket缓冲区_supersockets接收过滤器(ReceiveFilter)
- solver.prototxt参数说明(一)
- java-HTMLjavaSkcriptCSSjQueryajax
- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
- php 按条件进行计算的方法
- think in uml-关系