logging问题

logging问题

1. 下面这段代码,脚本多次使用init_log(path)写入日志,init_log的mode='w'。实际在写入的时候path文件是追加而不是覆写,不知道是什么原因呢?

2. win环境下如何指定path文件的编码格式是'utf-8'?

# coding:utf-8

"""
这段代码是Python的日志模块的使用示例。首先定义了一个init_log函数,用于初始化日志记录器并将日志写入指定的文件中。
其中,level参数指定了日志级别,format参数指定了日志输出的格式,filename参数指定了日志文件名,filemode参数指定了日志文件打开模式。
在主程序中,调用了init_log函数来初始化日志记录器,并指定了日志文件的路径和打开模式。
然后分别使用info、warning、error和debug等方法记录不同级别的日志信息。
需要注意的是,如果指定的日志文件不存在,则会自动创建一个新的日志文件;如果指定的日志文件已经存在,则会以追加模式打开该文件。
"""

import logging
import os


def init_log(path):
    # if os.path.exists(path):
    #     mode = 'a'
    # else:
    #     mode = 'w'
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s %(filename)s %(lineno)d %(levelname)s %(message)s',
        filename=path,
        filemode='w'
    )
    return logging


current_path = os.getcwd()
path = os.path.join(current_path, 'back.log')
log = init_log(path)

log.info('这是第一个记录的日志信息')
log.warning('这是一个警告')
log.error('这是一个重大的错误信息')
log.debug('这是一个debug')


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
Mr朱_ 提问者 2023-05-21 10:44:46

只要加encoding='utf-8'执行就没问题了

但是pycharm有意外实参的警告,不知道什么原因,这个警告能通过代码消除吗?

import logging
import os


def init_log(path):
    if os.path.exists(path):
        mode = 'a'
    else:
        mode = 'w'
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s %(message)s %(filename)s %(levelname)s %(lineno)d',
        filename=path,
        filemode=mode,
        encoding='utf-8'
    )
    return logging


log = init_log(os.path.join(os.getcwd(), 'back.log'))
log.info('这是第一个记录的日志信息')
log.warning('这是一个警告')
log.error('这是一个错误')
log.debug('这是 一个debug')


  • 同学,你好!老师这边没有出现同学说的警告,有个警告是同学自己写入日志的警告

    https://img1.sycdn.imooc.com//climg/646acd450965cfb508450146.jpg

    https://img1.sycdn.imooc.com//climg/646acd57090d899810040116.jpg

    祝学习愉快~

    2023-05-22 10:03:57
  • 提问者 Mr朱_ 回复 好帮手慕小猿 #2

    https://img1.sycdn.imooc.com//climg/646b634609a1d23418770713.jpg

    2023-05-22 20:42:58
  • 提问者 Mr朱_ 回复 好帮手慕小猿 #3

    pycharm还有  类似有警告但可以正常执行脚本的  其他问题

    class A(object):
        pass
    
    
    help(A)
    print(dir(A))
    a = A()
    print(vars(a))
    print(hasattr(a, '__dir__'), hasattr(a, 'b'))
    setattr(a, 'b', 2)
    print(getattr(a, 'b'))
    print(a.b)

    https://img1.sycdn.imooc.com//climg/646c1bf60958d3fc07200484.jpg

    2023-05-23 10:01:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师