自定义log
#coding=utf-8
import datetime
class Logs:
debug = 1
def logwr(self,logdd):
tms = datetime.datetime.now().strftime("%Y-%m-%d")
name='wenshu_{0}.log'.format(tms)
tm = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
line = "{0} : {1}".format(tm, logdd)
print(line)
with open(name,'a') as loged:
loged.write(line+"\n")
loged.close()
def log_debug(self,logdd):
logdd='debug:{0}'.format(logdd)
if self.debug==1:
self.logwr(logdd)
if __name__ == '__main__':
logs=Logs()
logs.logwr('test')
logs.log_debug('debuglog')
#!/usr/bin/env python
#_*_coding:utf-8_*_
import logging
logging.basicConfig( #通过具体的参数来更改logging模块默认行为;
level=logging.ERROR, #设置告警级别为ERROR;
format="%(asctime)s---%(lineno)s----%(name)s: %(message)s", #自定义打印的格式;
filename="yinzhengjie.txt", #将日志输出到指定的文件中;
filemode="a", #以追加的方式将日志写入文件中,w是以覆盖写的方式哟;
)
"""
format参数中可能用到的格式化串:
1>.%(name)s
Logger的名字
2>.%(levelno)s
数字形式的日志级别
3>.%(levelname)s
文本形式的日志级别
4>.%(pathname)s
调用日志输出函数的模块的完整路径名,可能没有
5>.%(filename)s
调用日志输出函数的模块的文件名
6>.%(module)s
调用日志输出函数的模块名
7>.%(funcName)s
调用日志输出函数的函数名
8>.%(lineno)d
调用日志输出函数的语句所在的代码行
9>.%(created)f
当前时间,用UNIX标准的表示时间的浮 点数表示
10>.%(relativeCreated)d
输出日志信息时的,自Logger创建以 来的毫秒数
11>.%(asctime)s
字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
12>.%(thread)d
线程ID。可能没有
13>.%(threadName)s
线程名。可能没有
14>.%(process)d
进程ID。可能没有
15>.%(message)s
用户输出的消息
"""
logging.debug("debug message") #告警级别最低,只有在诊断问题时才有兴趣的详细信息。
logging.info("info message") #告警级别比debug要高,确认事情按预期进行。
logging.warning("warning message") #告警级别比info要高,该模式是默认的告警级别!预示着一些意想不到的事情发生,或在不久的将来出现一些问题(例如“磁盘空间低”)。该软件仍在正常工作。
logging.error("error message") #告警级别要比warning药膏,由于一个更严重的问题,该软件还不能执行某些功能。
logging.critical("critical message") #告警级别要比error还要高,严重错误,表明程序本身可能无法继续运行。
#!/usr/bin/env python
#_*_coding:utf-8_*_
import logging
from logging import handlers
logger = logging.getLogger(__name__)
log_file = "timelog.log"
#fh = handlers.RotatingFileHandler(filename=log_file,maxBytes=10,backupCount=3)
fh = handlers.TimedRotatingFileHandler(filename=log_file,when="S",interval=5,backupCount=3) #filename定义将信息输入到指定的文件,
# when指定单位是s(秒),interval是时间间隔的频率,单位是when所指定的哟(所以,你可以理解频率是5s);backupCount表示备份的文件个数,我这里是指定的3个文件。
formatter = logging.Formatter('%(asctime)s %(module)s:%(lineno)d %(message)s') #定义输出格式
fh.setFormatter(formatter) #添加格式化输出
logger.addHandler(fh)
logger.warning("test1")
logger.warning("test2")
logger.warning("test3")
logger.warning("test4")