日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python import logging日志

發布時間:2025/3/15 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python import logging日志 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建日志類并使用

如何使用python自帶的 logging 模塊實現日志功能



1.初始化一個logger對象



1)引入模塊

import os import logging import sys

2)初始化變量,聲明logger對象

LOG_PATH = 'logs' #設置log路徑 LOG_FILE = 'text.txt' #設置log文件名#設置根路徑為起始位置 logger = logging.getLogger(__name__)

3) 生成路徑

#生成log指定路徑if os.path.exists(LOG_PATH):pass else:os.mkdir(LOG_PATH)

4)指定logger輸出格式

formatter = logging.Formatter('%(asctime)s %(levelname)-8s: %(message)s')file_handler = logging.FileHandler("%s/%s" % (LOG_PATH, LOG_FILE))# 可以通過setFormatter指定輸出格式file_handler.setFormatter(formatter)logger.addHandler(file_handler)

5)指定日志文件的輸出級別

分為如下幾個級別:

_nameToLevel = {'CRITICAL': CRITICAL,'FATAL': FATAL,'ERROR': ERROR,'WARN': WARNING,'WARNING': WARNING,'INFO': INFO,'DEBUG': DEBUG,'NOTSET': NOTSET, }

使用setLevel函數指定輸出級別 指定之后將只顯示級別以上的日志類型

logger.setLevel(logging.DEBUG)

6) 自動分割日志文件

python 提供了兩個處理器,方便我們分割文件:

logging.handlers.RotatingFileHandler -> 按照大小自動分割日志文件,一旦達到指定的大小重新生成文件

logging.handlers.TimedRotatingFileHandler -> 按照時間自動分割日志文件

?

when是一個字符串用于描述滾動周期的基本單位,字符串的值及意義如下:

'S': Seconds

'M': Minutes

'H': Hours

'D': Days

'W': Week day (0=Monday)

'midnight': Roll over at midnight

interval: 滾動周期,單位有when指定,比如:when='D',interval=1,表示每天產生一個日志文件;

backupCount: 表示日志文件的保留個數

?

2.輸入日志內容

#輸出debug類型日志 logger.debug("debug")#多參數傳遞 輸入info類型日志 pam= "dshck" pam2="cxjkdhc" logger.info("%s%s"%(pam,pam2))

log.py?代碼如下

import os import logging from logging.handlers import TimedRotatingFileHandler import datetime import jsonLOG_PATH = "log" LOG_INFO = '_info.log' LOG_ERROR = '_error.log'class logger:def __init__(self,prefix_name = "flask"):if os.path.exists(LOG_PATH):passelse:os.mkdir(LOG_PATH)self.prefix = prefix_nameself.info_logger = logging.getLogger("info")self.error_logger = logging.getLogger("error")self.format = logging.Formatter('[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s]\ [%(filename)s:%(lineno)d]' '[%(levelname)s] : %(message)s')#指定文件位置文件名以及輸出格式info_file_handler = logging.FileHandler("%s/%s%s" % (LOG_PATH, prefix_name,LOG_INFO))info_file_handler.setFormatter(self.format)error_file_handler = logging.FileHandler("%s/%s%s" % (LOG_PATH, prefix_name,LOG_ERROR))error_file_handler.setFormatter(self.format)self.info_logger.addHandler(info_file_handler)self.error_logger.addHandler(error_file_handler)# 指定日志的最低輸出級別self.info_logger.setLevel(logging.NOTSET)self.error_logger.setLevel(logging.ERROR)def debug(self, msg, *args, **kwargs):self.info_logger.debug(msg, *args, **kwargs)def info(self, msg, *args, **kwargs):self.info_logger.info(msg, *args, **kwargs)def warn(self, msg, *args, **kwargs):self.info_logger.warning(msg, *args, **kwargs)def warning(self, msg, *args, **kwargs):self.info_logger.warning(msg, *args, **kwargs)def error(self, msg, *args, **kwargs):self.error_logger.error(msg, *args, **kwargs)def fatal(self, msg, *args, **kwargs):self.error_logger.fatal(msg, *args, **kwargs)def critical(self, msg, *args, **kwargs):self.error_logger.critical(msg, *args, **kwargs)# log =logger() # log.info("jdshskh") # log.error("hdskck") # log.debug("1122debug") # log.warn("warn") # log.warning("warning") # log.critical("critical") # log.fatal("fatal")log =logger("celery") log.info("jdshskh") log.error("hdskck") log.debug("1122debug") log.warn("warn") log.warning("warning") log.critical("critical") log.fatal("fatal")

開源日志實例:

import logginglogger = logging.getLogger()def setup_logging(logfile, verbose):"""設置日志記錄到日志文件/控制臺。:param logfile:要寫入日志的文件的路徑。:param verbose:如果為true,則啟用詳細日志記錄。"""root_logger = logging.getLogger()default_formatter = logging.Formatter('%(asctime)-15s (%(name)s) %(filename)s[line:%(lineno)d] : %(message)s')if verbose:loglevel = logging.DEBUGelse:loglevel = logging.INFOroot_logger.setLevel(loglevel)console_log = logging.StreamHandler()console_log.setLevel(loglevel)console_log.setFormatter(default_formatter)root_logger.addHandler(console_log)if logfile in ('/dev/log', '/dev/syslog', '/var/run/syslog', '/var/run/log'):file_log = logging.handlers.SysLogHandler(address=logfile, facility='local1')syslog_formatter = logging.Formatter('beeswarm[%(process)d]: %(message)s')file_log.setFormatter(syslog_formatter)else:file_log = logging.FileHandler(logfile)file_log.setFormatter(default_formatter)file_log.setLevel(loglevel)root_logger.addHandler(file_log)# 日志按天自動創建"""time_rotating_file_handler = handlers.TimedRotatingFileHandler(filename=logfile, when='S')#time_rotating_file_handler.setLevel(logging.ERROR)time_rotating_file_handler.setLevel(logging.INFO)time_rotating_file_handler.setFormatter(default_formatter)root_logger.addHandler(time_rotating_file_handler)"""if __name__ == '__main__':setup_logging(args.logfile, args.verbose)logger.info('Initializing BeeSwarm version {0}'.format(beeswarm.version))logger.debug('workdir = {0}, config = {1}, customize = {2}, clear_db = {3}, reset_password = {4}, max_sessions = {5}, start_webui = {6}.'.format(args.workdir, config, args.customize, args.clearsessions, args.resetpw, args.max_sessions, not args.no_webui))logger.debug('workdir = {0}'.format())logger.error(...)logger.warning(...)

總結

以上是生活随笔為你收集整理的python import logging日志的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。