python多线程写日志_python 应用logging多线程写多个log文件

python 使用logging多线程写多个log文件

import threading

import time

import logging

import logging.handlers

LEVELS={'notset':logging.DEBUG,

'debug':logging.DEBUG,

'info':logging.INFO,

'warning':logging.WARNING,

'error':logging.ERROR,

'critical':logging.CRITICAL}

LOG_FILENAME = 'test.log'

LOG_BACKUPCOUNT = 5

LOG_LEVEL = 'notset'

def InitLog(file_name,logger):

LOG_FILENAME = file_name

handler = logging.handlers.RotatingFileHandler(LOG_FILENAME,maxBytes=10*1024*1024,backupCount=LOG_BACKUPCOUNT)

#handler = logging.FileHandler(LOG_FILENAME)

formatter = logging.Formatter("[ %(asctime)s ][ %(levelname)s ] %(message)s\n")

handler.setFormatter(formatter)

#logger = logging.getLogger()

logger.addHandler(handler)

logger.setLevel(LEVELS.get(LOG_LEVEL.lower()))

return logger

class t1(threading.Thread):

def __init__(self,threadName):

threading.Thread.__init__(self,name = threadName)

logger1 = logging.getLogger("thread.a")

self.logger = InitLog("thread1.log",logger1)

def run(self):

global i

self.logger.info("test1")

while True:

print '*************hello t1*****************'

self.logger.info("******hello t1******")

self.logger.debug("t1 debug")

self.logger.warning("t1 warning")

self.logger.error("t1 error")

i += 1

print i

if i> 10:

break

time.sleep(3)

self.logger.info("test1 over")

class t2(threading.Thread):

def __init__(self,threadName):

threading.Thread.__init__(self,name = threadName)

logger2 = logging.getLogger("thread.b")

self.logger = InitLog("thread2.log",logger2)

print "self.logger = %s" %self.logger

None

def run(self):

global i

self.logger.info("test2")

while True:

print 'hello t2'

self.logger.info("hello t2")

self.logger.debug("t2 debug")

self.logger.warning("t2 warning")

self.logger.error("t2 error")

i += 1

print i

if i > 10:

break

time.sleep(5)

self.logger.info("test2.over")

i = 0

p1 = t1('p1')

p1.start()

p2 = t2('p2')

p2.start()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php在数据库中上传图片格式,如何上传图片并在php中保存数据库中的URL

在这个PHP代码中我想自定义图像上传目的地 . 有了这个php文件,我有一个名为uploads的目录 . 我想将我上传的所有图像添加到此目录并在db中存储路径 . 我怎样才能做到这一点?// Assigning value about your server to variables for database connection$…

matlab转python难吗_MATLAB在逐渐被Python淘汰吗?

题主的问题我很适合回答,同机械工程大专业,目前供职某车企研发中心,工作内容里也有产品的控制系统研发部分。Matlab与Python各有其优势项,很难笼统的说孰优孰劣。但是在题主所涉及的机械控制工程、航空航天、嵌入式等领域&#xf…

自然水体辐射特性与数值模拟 pdf_OpenGMS系列讲座(十三)汪亚平教授:南黄海水动力过程和辐射沙脊群演化...

2020年8月28日,南京大学海岸与海岛开发教育部重点实验室汪亚平教授应地科院陈旻教授邀请,作客南京师范大学虚拟地理环境教育部重点实验室OpenGMS系列讲座,并做了题为"南黄海水动力过程和辐射沙脊群演化" 的报告。汪教授首先通过两个…

matlab2014a 3d标定,[转载]张的matlab摄像机标定

自己写了下matlab张的标定程序,采用张正有网站上的数据,即数据文档Model.txt data1.txt data2.txtdata3.txt data4.txt data5.txt。其中Model.txt为世界坐标系中的点【实验结果】我的程序:k1 -0.2286 k2 0.1903 fx 832.5000fy 832.5298 cx 30…

插值算法及matlab实现,MATLAB 插值算法实现

1.高斯插值function f Gauss(x,y,x0)if(length(x) length(y))n length(x);elsedisp(x和y的维数不相等!);return;endxx linspace(x(1),x(n),(x(2)-x(1)));if(xx ~ x)disp(节点之间不是等距的!);return;endif( mod(n,2) 1)if(nargin 2)f GStirling(x,…

小括号教学设计导入_【教资面试】语文政治历史地理教学设计答题技巧!

语文1.确立教学目标的依据 (1)基础教育课程改革课程改革要求语文课程必须面向全体学生,使学生获得基本的语文素养。对知识与技能,过程与方法,情感态度与价值观三个方面目标的整合,是语文新课程的价值追求。 根据语文学科工具性与人…

macos安装低版本php,mac下安装多个版本PHP及切换

mac电脑原来安装的是php 5.6.29现在再安装两个版本。php 5.6.32 php 7.0.27本文的原理就是用一个php管理工具(php-version)管理切换两个php。首先要先安装个包管理工具Homebrew:https://brew.sh/。一、先安装PHP5.6。brew install php56二、把PHP5.6的链接解除掉。b…

360浏览器卸载_陈蛋蛋碎碎念—如何完美地卸载流氓软件

陈蛋蛋碎碎念—如何完美地卸载流氓软件很多小伙伴都会有困扰,明明我就是只下载了一个软件啊,怎么电脑上莫名其妙地多了一大堆软件,什么我是渣渣辉一刀就是99级的游戏,什么影视全家桶,又或者是各种各样的浏览器&#xf…

oracle 抽样_深入理解Oracle动态采样

Oracle动态采样(Dynamic Sampling,12c称为Dynamic statistics),是对统计信息的⼀一个重要补充,当数据动态变化,⽆无法⽤用典型的统计信息描述时,动态采样可以给在解析时对表中数据进⾏行行采样,为优化器器提…

php target属性值,form表单的target属性

一 表单提交到了哪里?我们都知道表单提交到服务器,java,php,asp等服务器,然后由服务器去读。那么之后呢,服务器总要返回点什么吧,要么返回 一个xml或json数据,要么返回一个页面&…

java int相除向上取整_Java基础篇——Java运算符

Java运算符按功能可分为:算数运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和条件运算符。算数运算符算术运算符包括通常的加()、减(-)、乘(*)、除(/)、取模&am…

tns 连接超时_ORA-12170:TNS:连接超时

在Red Hat Enterprise Linux Server Releae 5.5 成功安装ORACLE 10g 后,在客户端配置TNS后,测试是否可以连接到数据块服务器,结果报错: ORA-12170:TNS:连接超时1:首先检查网络是否能ping通&…

nginx php access denied,LNMP 解决Access Denied错误详细介绍

处理搭建好LNMP环境之后,呈现了Access Denied错误搭建好LNMP环境之后,呈现了Access Denied错误,现已扫除掉文件权限的问题也扫除掉是Nginx的问题,而是无法解析PHP的问题。发现网上的很多大牛都是经过Nginx的log来排查错误&#xf…

dp主机_MODBUS 和 PROFIBUS-DP 协议有什么区别

modbus协议和 profibus DP协议两者的区别和用途主要在哪里?相比好多工控人都有这个疑问。今天小编带大家一起学习一下。一、modbus协议和 profibus DP协议综述Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络…

python list转换成树形结构_python递归查询菜单并转换成json实例

最近需要用python写一个菜单,折腾了两三天才搞定,现在记录在此,需要的朋友可以借鉴一下。备注:文章引用非可执行完整代码,仅仅摘录了关键部分的代码环境数据库:mysqlpython:3.6表结构CREATE TAB…

oracle轮询方式循环输出,LGWR的两种模式(POST/WAIT和POLLING)

11.2之前,oracle的lgwr写入模式为post/wait11.2之后新增了polling模式,可以与post/wait模式自动切换通过隐藏参数 _use_adaptive_log_file_sync 参数来控制查看该隐藏参数的方法:SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc descr…

ios上架图片在线制作_不同风格gif在线制作,公众号动态图片制作方法

现在运营公众号的主要方式就通过文章来进行宣传推广,在公众号文章中使用GIF动态图是非常常见的一种图片展现的方式,让文章整体效果看起来更加的生动有趣,所以很多的运营者在日常的工作和生活中会手机许多的动图素材,方便以后的使用…

python3.8学习_python3.8.1 入门基础学习 之 【字典】 学习

python3.8.1 入门基础学习 之 【字典】 学习字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:1、python3.8.1 …

oracle 树查询语句,oracle 树查询 语句

格式:SELECT columnFROM table_nameSTART WITH columnvalueCONNECT BY PRIOR 父主键子外键select lpad( ,4*(level-1))||name name,job,id,super from empstart with super is nullconnect by prior idsuper例子:原始数据:select no,q from a…

table tr省略后鼠标移入显示相应信息_中考来了,人机对话、信息技术考试要求看过来...

半岛记者 魏海洋今年的中考将拉开大幕,九年级英语听说人机对话考试(以下简称“人机对话考试”)将于4月20日(周六)至21日(周日)进。八年级信息技术考试将于4月22日(周一)进行,市招考办提醒广大考生,按照准考证规定时间及时参加考试。关于两门考…