在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重写进行日志记录相关推荐

  1. 手机怎么下载python并安装-CentOS下python的下载及安装

    针对" CentOS下python的下载及安装 "的问题,下面由IT产品经理-陆亦晓为您解答: Python这门编程语言在数据分析.数据发掘以及服务端开发等方面都有非常好的使用,我 ...

  2. centos下python编程工具_CentOS下python的下载及安装

    针对" CentOS下python的下载及安装 "的问题,下面由IT产品经理-陆亦晓为您解答: Python这门编程语言在数据分析.数据发掘以及服务端开发等方面都有非常好的使用,我 ...

  3. python 下载及安装-CentOS下python的下载及安装

    针对" CentOS下python的下载及安装 "的问题,下面由IT产品经理-陆亦晓为您解答: Python这门编程语言在数据分析.数据发掘以及服务端开发等方面都有非常好的使用,我 ...

  4. 【Linux笔记】CentOS下找不到eth0设备的解决方法

    [Linux笔记]CentOS下找不到eth0设备的解决方法 参考文章: (1)[Linux笔记]CentOS下找不到eth0设备的解决方法 (2)https://www.cnblogs.com/ly ...

  5. [Python+Anaconda] 查看Python、Anaconda下python、CUDA、函数库的版本

    查看Python.Anaconda下Python.CUDA.函数库的版本 前言 第三方库(比如Pytorch)要依赖Python版本,CUDA版本,对于不同的版本组合,会有不同的安装命令. 这就要求我 ...

  6. python log文件如何不写入syslog_Centos下python 对syslog重写进行日志记录

    在Linux 环境下,python自带一个syslog的模块可以进行日志记录.python可以利用logging模块来重写syslog,这样就可以自定义写入文件的文件名.如果不做配置则直接写入到/va ...

  7. linux中python编译器_linux下python编译器

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! linux下默认系统自带python2.6的版本,这个版本被系统很多程序所依赖, ...

  8. linux 切换python版本_Linux下python默认版本切换成替代版本(示例代码)

    当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件.你可以按照以下方法使用 ls 命令来查看你的系 ...

  9. linux开机自启动python脚本_Linux下Python脚本自启动和定时启动的详细步骤

    一.Python开机自动运行 假如Python自启动脚本为 auto.py .那么用root权限编辑以下文件: sudo vim /etc/rc.local 如果没有 rc.local 请看 这篇文章 ...

最新文章

  1. 挑战杯科展上的智能车作品
  2. 分享一个MD5加密的工具类
  3. Calc3: Multiple Integrals
  4. 字节流 system.in
  5. NIO原理及案例使用
  6. 强如 Disruptor 也发生内存溢出?
  7. c语言lnk1168无法打开exe,跪求大佬帮帮看看LINK : fatal error LNK1168: 无法打开 F:\windows程序设计\窗口\......
  8. face alignment by 3000 fps系列学习总结
  9. 线性代数二之矩阵加速DP——数学作业,Arc of Dream
  10. ipywidgets_未来价值和Ipywidgets
  11. MongoDB 常用运算符
  12. 微信开发学习日记(一):快速阅读5本书,掌握整体背景
  13. python处理json文件_python读取json文件转成excel
  14. jQuery-实例方法
  15. 仿XP系统的任务栏菜单
  16. Python学习手册之类和继承
  17. QT Opencv 抽奖系统
  18. win7计算机usb解除禁用,win7
  19. SPSS25 软件安装教程(附带网盘资源)
  20. Could not resolve dependencies for project

热门文章

  1. webview与js交互
  2. C语言进行网站开发之cgi
  3. PowerDesigner将PDM导出生成WORD文档
  4. Mysql数据类型之浮点与二进制型数据使用案例总结
  5. supersocket缓冲区_supersockets接收过滤器(ReceiveFilter)
  6. solver.prototxt参数说明(一)
  7. java-HTMLjavaSkcriptCSSjQueryajax
  8. ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
  9. php 按条件进行计算的方法
  10. think in uml-关系