# coding=utf-8
import logging
import time
import os
import logging.handlers
import re def logger(schedule_name, console_print=True, logging_level=None,console_debug_level=logging.INFO):
"""
:param schedule_name: the log scheduler name
:param console_print: if True console print log ,False not .
:param logging_level: file logging generate levels support: ["DEBUG","INFO","WARNING","ERROR"].
:param console_debug_level: it can be str also ,for exp: console_debug_level="INFO",default set logging.INFO.
:return: logging handlers
"""
log_fmt = "[%(levelname)s]%(asctime)s line %(lineno)d :\n%(message)s"
c_fmt = "[%(levelname)s]%(asctime)s %(filename)s.%(funcName)s():line %(lineno)d :\n%(message)s"
date_format = "%Y-%m-%d %H:%M:%S %a"
# 设置控制台输出level
logging.basicConfig(level=console_debug_level,
format=c_fmt,
datefmt=date_format, )
levels = []
if isinstance(logging_level, list):
for level in logging_level:
if level in ["DEBUG","INFO","WARNING","ERROR"]:
levels.append(level)
if levels:
stamp = "dailylog.log"
logsdir = os.path.join(os.getcwd(), "logs")
if os.path.exists(logsdir):
for p in levels:
if os.path.exists(os.path.join(logsdir, p)):
pass
else:
os.mkdir(os.path.join(logsdir, p))
else:
os.mkdir(logsdir)
for p in levels:
os.mkdir(os.path.join(logsdir, p)) logging_level_path = {}
for i in levels:
filename = os.path.join(logsdir, i, stamp)
logging_level_path[i] = filename
logger = logging.getLogger(schedule_name)
print(logging_level_path)
for k, v in logging_level_path.items():
handler = logging.handlers.TimedRotatingFileHandler(filename=v, when='MIDNIGHT', interval=1,
backupCount=4,encoding="utf-8")
handler.suffix = "%Y-%m-%d.log"
handler.extMatch = r"^\d{4}-\d{2}-\d{2}.log$"
handler.extMatch = re.compile(handler.extMatch)
h_fmt = logging.Formatter(log_fmt)
handler.setFormatter(h_fmt)
if k in ["DEBUG","INFO","WARNING","ERROR"]:
handler.setLevel(k)
logger.addHandler(handler)
logger.propagate = console_print
return logger
else:
raise TypeError('logging_level support in:["DEBUG","INFO","WARNING","ERROR"]')
else:
raise NameError("logging_level expect list but get %s"%(type(logging_level).__name__))

  .

最新文章

  1. Maven 私有库 Nexus的安装
  2. Linux 下多核CPU知识【转】
  3. _CrtMemBlockHeader
  4. 2015.11.27初识java一集简单的java小程序
  5. error LNK2019: 无法解析的外部符号
  6. TextureView+SurfaceTexture+OpenGL ES来播放视频(一)
  7. 蓝桥网试题 java 入门训练 A+B问题
  8. 关于input 的选中,自定义input[type="checkbox"]样式
  9. 建立第一个SpringBoot小列子(碰到的错误)
  10. Convolutional Neural Network Architectures for Matching Natural Language Sentences
  11. C#控制台下测试多线程的源码
  12. Charles抓https请求详细步骤
  13. PUSU 拆分后发货和开票的时间节点问题
  14. spring的配置文件解析(转)
  15. ubuntu的配置文件
  16. python的range函数与切片操作符
  17. Object C学习笔记3-对象的使用和定义
  18. https://www.yunpanjingling.com/
  19. 写shell脚本需要注意哪些地方----零基础必看
  20. Memcached replace 命令

热门文章

  1. 重载(Overload)和重写(Override)的区别是什么?
  2. 解决安装完Anaconda后右键没有powershell、、、
  3. Java类、方法、属性等
  4. 实用 docker history
  5. ORA-04089: cannot create triggers on objects owned by SYS
  6. 网页前端导出CSV,Excel格式文件
  7. 关于KMP的next函数的原理分析
  8. 在github网站上更新fork的repo
  9. 来了,就给自己立个flag
  10. 画图软件gliffy