将需要的信息写入日志log文件中、将print打印的内容保存到日志

1、将需要的信息写入日志log文件中

在程序中,我们经常需要将一些信息写入log文件中,因为你只是print的话,第一是信息太多,第二是看不太懂

直接改变下面代码的“log_name”就可以创建一个新的log文件,“log_name”变量不需要加“.log”字符

        # ======================================================================================
        # 自定义log的名字
        log_name = "decoder_smiles"

        import logging
        logger_name = "logger_" + log_name
        formatter_name = "formatter_" + log_name
        logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
        globals()[logger_name] = logging.getLogger(logger_name)
        file_handler = logging.FileHandler(log_name + '.log')
        file_handler.setLevel(logging.INFO)
        globals()[formatter_name] = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
        file_handler.setFormatter(globals()[formatter_name])
        globals()[logger_name].addHandler(file_handler)

        # 要写入的信息
        globals()[logger_name].info('mol是:%s', a)
        globals()[logger_name].info('decoder_smiles是:%s', b)
        globals()[logger_name].info('decoder_smiles是:%s', 222)
        # ======================================================================================

注意

1、当你用了上面这个log以后,debug的时候可能会不间断,所以可能到时候需要暂时注释这几行

2、globals()[logger_name].info('decoder_smiles是:%s', 2222) 输出信息这一行,有几个需要赋值给字符串的变量,就需要几个“%s”,这里和print()语句不一样,print可以直接写不需要“%s”。例如:

a = 3
b =1
print('a/b', a ,b)
globals()[logger_name].info("decoder_smiles是:%s,%s", a, b)


2、将print打印的内容保存到日志 

将该函数放入工具包utils 

def make_print_to_file(path='./'):
    # path, it is a path for save your log about fuction print
    import os
    import sys
    import datetime
    if not os.path.exists(path):
        os.makedirs(path)

    class Logger(object):
        def __init__(self, filename="Default.log", path="./"):
            self.terminal = sys.stdout
            self.log = open(os.path.join(path, filename), "a", encoding='utf8', )

        def write(self, message):
            self.terminal.write(message)
            self.log.write(message)

        def flush(self):
            pass

    fileName = datetime.datetime.now().strftime('day' + '%Y_%m_%d')
    sys.stdout = Logger(fileName + '.log', path=path)
    # 这里输出之后的所有的输出的print 内容即将写入日志
    print("*************************************Current time is:",datetime.datetime.now().strftime('%Y-%m-%d-%H:%M'),"**************************************")

只需要在函数最开始运行的地方加上下面几句话就可以了 ,即函数调用放在main函数之后的第一句

from utils.print2log import make_print_to_file

# the print content output to log
make_print_to_file(path='./log/print_content')
# 这里输出之后的所有的输出的print 内容即将写入日志

python3 将print打印的内容保存到日志_JY丫丫-CSDN博客_python 保存日志

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Pengsen Ma

太谢谢了

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

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

打赏作者

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

抵扣说明:

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

余额充值