#!/usr/bin/env python
# -*- coding: utf-8 -*- """
__title__ = logging工具类
__Time__ = 2019/8/8 19:26
"""
import logging
import os
import sys
import time
from logging import handlers class Loggers:
__instance = None def __new__(cls, *args, **kwargs):
if not cls.__instance:
cls.__instance = object.__new__(cls, *args, **kwargs)
return cls.__instance def __init__(self):
# 设置输出格式
formater = logging.Formatter(
'[%(asctime)s]-[%(levelname)s]-[%(filename)s]-[%(funcName)s:%(lineno)d] : %(message)s')
# 定义一个日志收集器
self.logger = logging.getLogger('log')
# 设定级别
self.logger.setLevel(logging.DEBUG)
# 获取文件名
now = time.strftime(
'%Y%m%d%H', time.localtime(time.time())) + '.log'
execfile = sys.argv[0]
if "/" in execfile:
pre = execfile[sys.argv[0].rindex("/") + 1:sys.argv[0].rindex(".")]
else:
pre = execfile[0:sys.argv[0].rindex(".")]
path = os.path.join(sys.path[0], 'log')
if os.path.exists(path) == False:
os.mkdir(path)
logfilename = os.path.join(path, pre + now)
# 输出渠道一 - 文件形式
self.fileLogger = handlers.RotatingFileHandler(logfilename, maxBytes=5242880, backupCount=3, encoding="utf-8") # 输出渠道二 - 控制台
self.console = logging.StreamHandler()
# 控制台输出级别
self.console.setLevel(logging.DEBUG)
# 输出渠道对接输出格式
self.console.setFormatter(formater)
self.fileLogger.setFormatter(formater)
# 日志收集器对接输出渠道
self.logger.addHandler(self.fileLogger)
self.logger.addHandler(self.console) # def debug(self, msg):
# self.logger.debug(msg=msg)
#
# def info(self, msg):
# self.logger.info(msg=msg)
#
# def warn(self, msg):
# self.logger.warning(msg=msg)
#
# def error(self, msg):
# self.logger.error(msg=msg)
#
# def excepiton(self, msg):
# self.logger.exception(msg=msg) def getLog(self):
return self.logger

随便封装下log的更多相关文章

  1. 随便记录下系列 - node->express

    随便记录下系列 - node->express 文章用啥写?VsCode. 代码用啥写?VsCode. 编辑器下载:VsCode 一.windows下安装node.js环境: 下载地址 相比以前 ...

  2. Android 下log的使用总结

    Android 下log的使用总结 一:在源码开发模式下 1:包含头文件: #include <cutils/log.h> 2:定义宏LOG_TAG #define LOG_TAG &qu ...

  3. PHP.TP框架下商品项目的优化3-php封装下拉框函数

    php封装下拉框函数 因为在项目中会经常使用到下拉框,所以根据一个表中的数据制作下拉框函数,以便调用 //使用一个表的数据做下拉框函数 function buildSelect($tableName, ...

  4. 封装dropdown模块(使用到之前写好的动画组件,封装下拉菜单)

    用 showhide 改写dropdown 模块: 1.首先在 css中新增动画相关样式 /*showhide组件的样式*/ .fadeOut{ opacity:; visibility: hidde ...

  5. 自己封装一个Log模块

    Unity自己有log系统,为什么要自己封装一个 1.不好用,只能在pc上记录log文件,移动平台是没有的 2.在开发时期的log,不想在正式版里面出现.没有一个统一的开关来控制是不是要显示log,要 ...

  6. Dapper小型ORM的使用(随便吐槽下公司)

    近来公司又有新项目要做,之前做项目用过蛮多ORM,包括ef,NetTiers,ServiceStack.OrmLite等ROM,每种ORM都有一定的坑(或者说是使用者的问题吧~~).用来用去都觉的有一 ...

  7. 实现在Android 下log的使用总结

    一:在源码开发模式下 1:包含头文件: #include <cutils/log.h>   2:定义宏LOG_TAG #define LOG_TAG "MY LOG TAG&qu ...

  8. 路由器基础配置之ppp封装下的pap,chap认证

    我们将以上面的拓扑图完成本次实验,路由器的默认封装为HDLC,要求为把路由器全被更改为ppp封装,并在router3与router4之间用pap认证,在router4与router5之间用chap认证 ...

  9. IE 下 log 调试的一点不同

    介绍一点IE下控制台调试与chrome的区别 数组 alert([1,2]) console.log([1,2]) console.log([1,2],"1,2") alert I ...

  10. 封装下Excel导出

    1. 使用方法 1.1 对象使用注解 @ExcelColumn(name = "页面1",freeze = "0,1,1,2",autoWidth=true) ...

随机推荐

  1. Java 同步锁ReentrantLock与抽象同步队列AQS

    AbstractQueuedSynchronizer 抽象同步队列,它是个模板类提供了许多以锁相关的操作,常说的AQS指的就是它.AQS继承了AbstractOwnableSynchronizer类, ...

  2. 造个Python轮子,实现根据Excel生成Model和数据导入脚本

    前言 最近遇到一个需求,有几十个Excel,每个的字段都不一样,然后都差不多是第一行是表头,后面几千上万的数据,需要把这些Excel中的数据全都加入某个已经上线的Django项目 这就需要每个Exce ...

  3. vue脚手架安装及依赖

    一.安装Vue Cil (脚手架) 需要先安装node.js,这是node官网地址: https://nodejs.org/en/download/ ,node有两种版本一种是稳定版一种开发版 安装完 ...

  4. 1.2 Hadoop简介-hadoop-最全最完整的保姆级的java大数据学习资料

    目录 1.2 Hadoop简介 1.2.1 什么是Hadoop 1.2.2 Hadoop的起源 1.2.3 Hadoop的特点 1.2.4 Hadoop的发行版本 1.2.5 Apache Hadoo ...

  5. Spring Boot整合log4j实战(一):排除自带依赖、日志重定向、测试类验证

    〇.参考资料 1.springboot整合log4j全过程详解 https://blog.csdn.net/m0_60845963/article/details/123307232 2.Spring ...

  6. 【SQL进阶】Day05:窗口函数

    〇.概述 一.专用窗口函数 1.每类试卷得分前3名 自己写出来的部分 SELECT tag AS tid, uid AS uid, Rank AS ranking -- 如何确定排名 FROM exa ...

  7. python3中的常见知识点2

    python3中的常见知识点2 列表与栈和队列 map()函数 python列表遍历的4种方式 参考链接 列表栈和队列 1.列表作为栈使用 栈:先进后出,First In Last Out 使用 ap ...

  8. 跟我学Python图像处理丨图像分类原理与案例

    摘要:本篇文章将分享图像分类原理,并介绍基于KNN.朴素贝叶斯算法的图像分类案例. 本文分享自华为云社区<[Python图像处理] 二十六.图像分类原理及基于KNN.朴素贝叶斯算法的图像分类案例 ...

  9. ArcObjects SDK开发 016 在ArcMap中使用Toolbox

    1.如何找到ToolBox 通过Geoprocessing菜单上的ArcToolbox菜单项,可以打开ArcToolbox面板. 工具栏上也有一个ArcToolbox的按钮,点击该按钮也可以打开. 通 ...

  10. python-docx操作word文档详解

    案例 官网地址: https://python-docx.readthedocs.io/en/latest/ pip install python-docx from docx import Docu ...