首页 > 编程语言 >python3 log工具

python3 log工具

时间:2024-10-14 15:12:58浏览次数:7  
标签:__ logr log self path logging 工具 python3

python3 log工具 logutil.py

# -*- coding: utf-8 -*-

import os,sys,traceback
import logging
from logging.handlers import RotatingFileHandler
import getpass




def singleton(cls):
    instances = {}
    def get_instance():
        if cls not in instances:
            instances[cls] = cls()
        return instances[cls]
    return get_instance()

@singleton
class GConfig:
    def __init__(self):
        self.logger_filename = "server.log"
        self.logger_lv = "INFO"

@singleton
class Logger(object):
    def __init__(self):
        log_path = os.path.join(os.path.expanduser("."), "logs")
        Log_filename = os.path.join(log_path, GConfig.logger_filename)
        self.loggername = getpass.getuser()
        self.logr = logging.getLogger()
        if GConfig.logger_lv.upper().strip() == 'DEBUG':
            self.logr.setLevel(logging.DEBUG)
        elif GConfig.logger_lv.upper().strip() == 'WARNING':
            self.logr.setLevel(logging.WARNING)
        elif GConfig.logger_lv.upper().strip() == 'ERROR':
            self.logr.setLevel(logging.ERROR)
        elif GConfig.logger_lv.upper().strip() == 'CRITICAL':
            self.logr.setLevel(logging.CRITICAL)
        else:
            self.logr.setLevel(logging.INFO)
        # self.logr.setLevel(logging.WARNING)
        
        handler = None
        if not os.path.isdir(log_path):
            try:
                os.mkdir(log_path) # create dir if it doesn't exist
            except:
                raise IOError("Couldn't create \"" + log_path + "\" folder. Check" \
                          " permissions")
        try:
            handler = logging.FileHandler(Log_filename, "a")
            # create RotatingFileHandler,最多备份1个日志文件,每个日志文件最大20M
            handler = RotatingFileHandler(Log_filename, maxBytes = 20*1024*1024,backupCount = 5)
            formatter = logging.Formatter("%(asctime)s  %(name)s - %(filename)s[line:%(lineno)d] - %(levelname)s - %(message)s")
            handler.setFormatter(formatter)
        except:
            raise IOError("Couldn't create/open file \"" + Log_filename + "\". Check permissions.")
        
        ch = logging.StreamHandler(sys.stdout)
        ch.setLevel(logging.DEBUG)
        ch.setFormatter(formatter)
        if handler:
            self.logr.addHandler(handler)
        self.logr.addHandler(ch)
    
if __name__ =="__main__":
        # 'application' code
        Logger.logr.warning('debug message')

使用

from logutil import Logger
Logger.logr.info("hello world")

标签:__,logr,log,self,path,logging,工具,python3
From: https://www.cnblogs.com/brian-sun/p/18464258

相关文章

  • Understanding Astrology APIs: Powering the Future of Astrological Services
    UnderstandingAstrologyAPIs Astrologyhasevolvedbeyonditstraditionalroots,seamlesslyblendingwithmoderntechnologytoprovideaccurateandpersonalizedastrologicalservices.Oneofthekeyinnovationsbehindthisshiftistheuseof Astrolog......
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.4
    文章目录猜数字游戏专题1.随机数生成1.1rand1.2srand1.3time1.4随机数的范围2.猜数字游戏的实现希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力!猜数字游戏专题掌握了前面学习的vlog的知识,尤其是分支与循环,我们可以写一个经典有趣的游戏:猜数......
  • OSS 使用ossutil工具通过命令行上传大于5G的文件
    一、简介对象存储OSS支持通过多种方式上传文件。对于大文件(超过5GB的文件),可能存在上传失败或者上传慢的情况。此时您可以通过分片上传、断点续传、ossbrowser工具、ossutil工具等多种方式上传大文件。二、ossbrowser工具下载以及使用1.ossbrowser工具下载地址及使用方法#下载安装......
  • Java中Math工具类
    Math工具类求绝对值求一个数的次幂求两个数的最大值求两个数的最小值求一个数的平方根圆周率π角度值转弧度值求正弦值(sin)求余弦值(cos)求正切值(tan)生成随机数浮点数向上取整浮点数向下取整对小数四舍五入求指数函数值求对数函数值在Java中,Math类是一个工具类,......
  • Android移动应用所需的工具
    基础配置Kotlin:Kotlin是一种兼具面向对象编程(OOPS)和函数式编程范式的静态类型现代编程语言。作为JVM语言,它与Java包和库完全兼容。由Google和JetBrains共同推出,Kotlin旨在成为Java的替代品,并已被Google指定为Android开发的官方语言。AndroidStudio:AndroidStudio是Android开发......
  • Java数组工具类Arrays
    Arrays工具类将数组内容转为字符串对数组内容进行排序判断是否相同数组的复制查找特定值的索引用指定元素存满数组数组转列表Arrays工具类提供了一系列方便、高效的方法来操作和处理数组,大大简化了Java中对数组的常见操作。将数组内容转为字符串使用Arrays......
  • 哪个AI写小说工具最推荐?笔灵AI带你快速入门
    在数字时代,创作小说不再局限于传统的笔和纸,而是可以通过先进的技术来辅助和增强。笔灵AI,正是这样一款创新的人工智能写作工具,它旨在帮助作家和创作者们将他们的故事构思转化为生动的文字。让我们一起深入了解笔灵AI的小说创作功能,以及如何一步步使用这些功能来丰富您的创作体验......
  • ImTip:又一款小巧的输入法状态提示工具
    ​ImTip是一款小巧的Windows工具,用来在有输入光标的地方,显示输入法状态。官网:https://imtip.aardio.com‍介绍一款显示输入法状态的工具。特点:仅660KBCPU占用极低开源在:https://github.com/aardio/ImTip,目前已经有1.5k的star单文件绿色软件,无任何外部依赖兼容......
  • 误删GreatSQL数据?别慌,Binlog来帮忙
    误删GreatSQL数据?别慌,Binlog来帮忙数据丢失是每一个数据库管理员和开发者都不愿面对的噩梦。然而,意外总是难免,当不小心删除了重要的数据,如何才能迅速而有效地进行恢复呢?在数据库中有二进制日志(Binlog),它不仅记录了所有更改数据的事件,还可以帮助将数据库恢复到任何一个特定的时......
  • 【Python开发技术之PyQt5精品教学】第32课--PyQt5 QDialog类
    PyQt5QDialog类QDialog 是一个顶层窗口小部件,主要用于收集用户的响应。它可以配置为 模态 (它会阻塞其父窗口)或 非模态 (对话框窗口可以被绕过)。PyQt API有许多预配置的对话框小部件,例如InputDialog,FileDialog,FontDialog等。示例在下面的示例中,对话框窗口的 WindowMo......