python的日志代码模板(可直接使用)

一般在写完代码的时候,除了在控制台打印日志以外,还会想要生成一个log日志文件用于备份,那么直接加上以下这段代码即可,日志文件命名中包含精确的时间信息,因此同一时间段多次运行同一段代码也不会出现日志覆盖的问题。如果没有logs文件夹的话会自动生成,不必考虑任何报错问题。

1、代码实例(直接可用) 

import os
import datetime
import logging


def print_and_log(string):
    print(string)
    logging.info(string)


if __name__ == '__main__':
    py_path = os.path.basename(__file__).split('.')[0]
    os.makedirs('logs/', exist_ok=True)
    log_file = 'logs/' + os.path.basename(os.getcwd()) + '_' + py_path + '_' + str(
        datetime.datetime.now()).replace(':', '').replace(' ', '_') + '.txt'
    logging.basicConfig(
        level=logging.DEBUG,
        format='%(asctime)s %(filename)s %(levelname)s: %(message)s',
        filename=log_file,
        filemode='w'
    )

    print_and_log("测试日志")

运行结果:

生成的日志内容:

2、日志文件名解析

FlaskOA_test_code_2024-07-14_125854.911996.txt

FlaskOA 指的是你当前的项目名(这个其实可有可无,个人使用的时候可以去掉这部分);

test_code 指的是你当前执行的 python 文件名;

2024-07-14 就是执行当前代码时的日期;

125854 指的是执行当前代码时的时分秒;

123456 这部分是执行当前代码时的微秒数(1秒=1百万微秒);

3、代码解析版

import os
import datetime
import logging

# 控制台打印的同时,日志文件也记录下日志内容(此处可根据需求自己设置)
def print_and_log(string):
    print(string)
    logging.info(string)


if __name__ == '__main__':
    '''
        __file__:指的是当前正在执行的 python 文件的完整路径;
        os.path.basename('path1/path2'):获取一个路径中的最小级别的目录或文件名,即“path2”;
        os.path.basename(__file__):获取当前正在执行的 python 文件名;
        os.path.basename(__file__).split('.')[0]:由于获取到的文件名后面带有'.py',所以用split函数获取.号前面的文件名内容
    '''
    py_path = os.path.basename(__file__).split('.')[0]
    os.makedirs('logs/', exist_ok=True)
    '''
        os.getcwd():获取当前的项目路径;
        os.path.basename(os.getcwd()):就是指获取当前项目名称;
        str(datetime.datetime.now()).replace(':', '').replace(' ', '_'):
            由于文件名不可以有分号:,所以将分号去掉了,空格的地方则替换为下划线_
    '''
    log_file = 'logs/' + os.path.basename(os.getcwd()) + '_' + py_path + '_' + str(
        datetime.datetime.now()).replace(':', '').replace(' ', '_') + '.txt'
    logging.basicConfig(
        level=logging.DEBUG,
        format='%(asctime)s %(filename)s %(levelname)s: %(message)s',
        filename=log_file,
        filemode='w'
    )

    print_and_log("测试日志")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我有明珠一颗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值