python自定义文件名_如何在python logger中指定调用者文件名

我正在尝试创建基于python logger库的自定义日志.

主要目标是创建可以从应用程序中的任何脚本调用的主日志,并将日志数据写入同一日志文件.

问题是因为logger嵌入到自定义类中,所以函数的每次调用都会写入日志数据,就好像从主文件调用一样.

可以说我有自定义日志类的代码:

import os

import logging

from logging import *

from datetime import *

class omri_logging:

@staticmethod

def logcreate (severity = logging.DEBUG, filename =os.path.basename(__file__)):

today = datetime.today()

week = today.strftime("%U")

LogName = 'MainLog' + week + '.log'

FORMAT = "%(filename)s#%(levelname)s#%(asctime)s#%(funcName)s#%(lineno)d#%(message)s"

logging.basicConfig(filename=LogName,

level=severity,format=FORMAT,

)

@staticmethod

def CreateError (msg):

logging.error(msg)

logcreate函数将接收调用它的文件名.如何更改记录器格式化程序以将此文件名作为记录文件.

获取以下日志示例:

omri_logger.py#DEBUG#2015-02-21 11:48:56,819##63#Error Message >Sent From File

对于以下日志行,请考虑现在调用CreateError的文件名是LogCallFile.py

LogCallFile.py#DEBUG#2015-02-21 11:48:56,819##63#Error Message >Sent From File

解决方法:

有一个单独的python文件说settings.py保存日志设置,并将其导入您的项目文件.

import logging

from logging.handlers import RotatingFileHandler

log_formatter = logging.Formatter('%(asctime)s %(levelname)s %(filename)s(%(lineno)d) %(message)s')

my_handler = RotatingFileHandler(Logfile, mode='a', maxBytes=5*1024*1024,

backupCount=5, encoding=None, delay=0)

my_handler.setFormatter(log_formatter)

my_handler.setLevel(logging.INFO)

导入settings.py后,在项目文件中使用以下代码

app_log = logging.getLogger('root')

app_log.setLevel(logging.INFO)

app_log.addHandler(settings.my_handler)

标签:python,format,logging

来源: https://codeday.me/bug/20190628/1318388.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值