Python记录 - 如何在循环中添加每个迭代的新日志文件?

发布于 2025-01-23 20:58:19 字数 1313 浏览 1 评论 0原文

我正在尝试使用以下方式在循环中为每次迭代生成新的日志文件:

def custlogger(Filename,loglevel=logging.DEBUG):
    # set method name from where its called
    logger_name = inspect.stack()[1][3]
    # create logger
    logger = logging.getLogger(logger_name)
    logger.setLevel(loglevel)
    # create console handler of file handler and set log level
    file_handler = logging.FileHandler(filename=Filename)
    # create formatter
    formatter = logging.Formatter('%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s')
    # add formatter to console or file handler    
    file_handler.setFormatter(formatter)
    # add console handler to loogger
    logger.addHandler(file_handler)

然后我调用newlogger = Custlogger(NewFilename) ,并在每次迭代末尾关闭日志记录。 )在循环中。这是正确的方法吗?

这是我如何使用它的示例:

def analyze_scds_files(scds_directory, sample_name):
    logfile = scds_directory+'/log_'+sample_name+'.txt'
    newlogger = custlogger(logfile,logging.ERROR)                                                        
    try:
        dosomething()
    except Exception as e:
        newlogger.logger.exception('error while trying to ...: ')
        sys.exit()
    .
    .
    .
    # Shut down the logger
    logging.shutdown()

    return status

I am trying to generate new log file for each iteration in a loop using:

def custlogger(Filename,loglevel=logging.DEBUG):
    # set method name from where its called
    logger_name = inspect.stack()[1][3]
    # create logger
    logger = logging.getLogger(logger_name)
    logger.setLevel(loglevel)
    # create console handler of file handler and set log level
    file_handler = logging.FileHandler(filename=Filename)
    # create formatter
    formatter = logging.Formatter('%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s')
    # add formatter to console or file handler    
    file_handler.setFormatter(formatter)
    # add console handler to loogger
    logger.addHandler(file_handler)

and I call the newlogger = custlogger(newfilename) and shut down logging at the end of each iteration logging.shutdown() inside the loop. Is this the right way to do it?

Here is an example how I am using it:

def analyze_scds_files(scds_directory, sample_name):
    logfile = scds_directory+'/log_'+sample_name+'.txt'
    newlogger = custlogger(logfile,logging.ERROR)                                                        
    try:
        dosomething()
    except Exception as e:
        newlogger.logger.exception('error while trying to ...: ')
        sys.exit()
    .
    .
    .
    # Shut down the logger
    logging.shutdown()

    return status

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

手心的温暖 2025-01-30 20:58:19

建议,有点记录的问题,将其从弹奏中移出并打电话给标头(1倍,您正在重新启动)

logger = logging.getLogger(logger_name)
logger.setLevel(loglevel)

的最小模式是:

import logging
logger = logging.getLogger(__name__)
# in header ^^ in loop ---v
logger('xx') # call this in loop

首先将其打印在终端中,然后添加格式和其他功能。亲吻v1,然后拟合。

Suggestions, a little under documented question, Move this out of func and call in header (1x, you are redeclaring)

logger = logging.getLogger(logger_name)
logger.setLevel(loglevel)

The minimal pattern is:

import logging
logger = logging.getLogger(__name__)
# in header ^^ in loop ---v
logger('xx') # call this in loop

Get it to print in terminal first, then add formatting and other features. KISS v1, then complify.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文