# -*- coding: utf-8 -*
"""日志工具类 author: Jill usage:
from common.logger import Log
log = Log().get_logger()
log.error("error occurred when xxx")
"""
import logging
import time
import os cur_path = os.path.dirname(os.path.realpath(__file__))
log_path = os.path.join(os.path.dirname(cur_path), 'logs')
# 如果不存在这个logs文件夹,就自动创建一个
if not os.path.exists(log_path):
os.mkdir(log_path) class Log:
@staticmethod
def get_logger():
fmt = logging.Formatter('[%(asctime)s] [%(threadName)s] [%(levelname)s] [%(pathname)s:%(lineno)s]: %(message)s',
"%Y-%m-%d %H:%M:%S")
console_handler = logging.StreamHandler()
console_handler.setFormatter(fmt)
log_name = os.path.join(log_path, '%s.log' % time.strftime('%Y_%m_%d'))
file_handler = logging.FileHandler(log_name, 'a', encoding='utf-8') # 这个是python3的
file_handler.setFormatter(fmt)
logger = logging.getLogger('App')
logger.setLevel(logging.DEBUG)
if logger.handlers:
return logger
logger.addHandler(console_handler)
logger.addHandler(file_handler)
return logger if __name__ == "__main__":
log2 = Log.get_logger()
log = Log.get_logger()
log2.info('test')
log.info('test')
log2.error('test')
log.warning('test')
log.debug('test')

最新文章

  1. 运用css,对于下拉菜单的制作
  2. 同比 VS 环比
  3. oc集合
  4. transition与visibility之间的小tips
  5. mybatis框架中分页的实现
  6. Redis之高可用方案
  7. NOJ 1063 生活的烦恼
  8. android 工具类之图片加工
  9. CCNA第二讲笔记
  10. ios动力特效,最重要的一点 属性保持(写了动力特效但是没效果的原因就在这里)
  11. HBase HFile
  12. [Android学习笔记]枚举与int的转换
  13. JavaScript DOM编程艺术-学习笔记(总结一)
  14. Windows Server 2016-安装AD域服务注意事项
  15. D. Artsem and Saunders
  16. yii2 下拉菜单
  17. hihoCoder week23 最短路径·一
  18. nginx 根据域名和地址跳转
  19. data型怎么转换格式
  20. [转]Linux内核源码详解--iostat

热门文章

  1. 【linux基础】重命名文件和文件夹
  2. opencv-python教程学习系列12-图像阈值
  3. TF-IDF算法(2)—python实现
  4. Java-如何不使用-volatile-和锁实现共享变量的同步操作
  5. cglib 多重 代理示例-2
  6. C语言写CGI程序
  7. MySQLi基于面向对象的编程
  8. Ionic 3 自定义组件的使用
  9. asp.net后台正则表达式验证手机号码邮箱
  10. ios之block笔记