怎么把python运行结果保存到log?

怎么把python运行结果保存到log?,第1张

通过管道输出到另一个程序里去,另外一个程序同时打印并输出到out.log。

用自己的myprint代替所有的print语句。这样你可以同时输出到屏幕与文件了。

通过logging。这个模块支持多个listener,可以同时输出到屏幕与文件以及网络。

python test.py >1.log

将输出结果记录到1.log(覆盖写入)

python test.py >>1.log

将输出结果追加到1.log(每次追加)

#coding=utf-8

def

initlog():

import

logging

#

生成一个日志对象

logger

=

logging.getLogger()

#

生成一个Handler。logging支持许多Handler,

#

象FileHandler,

SocketHandler,

SMTPHandler等,我由于要写

#

文件就使用了FileHandler。

#

logfile是一个全局变量,它就是一个文件名,如:'crawl.log'

logfile

=

'test.log'

hdlr

=

logging.FileHandler(logfile)

#

成一个格式器,用于规范日志的输出格式。如果没有这行代码,那么缺省的

#

格式就是:"%(message)s"。也就是写日志时,信息是什么日志中就是什么,

#

没有日期,没有信息级别等信息。logging支持许多种替换值,详细请看

#

Formatter的文档说明。这里有三项:时间,信息级别,日志信息

formatter

=

logging.Formatter('%(asctime)s

%(levelname)s

%(message)s')

#

将格式器设置到处理器上

hdlr.setFormatter(formatter)

#

将处理器加到日志对象上

logger.addHandler(hdlr)

#

设置日志信息输出的级别。logging提供多种级别的日志信息,如:NOTSET,

#

DEBUG,

INFO,

WARNING,

ERROR,

CRITICAL等。每个级别都对应一个数值。

#

如果不执行此句,缺省为30(WARNING)。可以执行:logging.getLevelName

#

(logger.getEffectiveLevel())来查看缺省的日志级别。日志对象对于不同

#

的级别信息提供不同的函数进行输出,如:info(),

error(),

debug()等。当

#

写入日志时,小于指定级别的信息将被忽略。因此为了输出想要的日志级别一定

#

要设置好此参数。这里我设为NOTSET(值为0),也就是想输出所有信息

logger.setLevel(logging.NOTSET)

return

logger

logging=initlog()

logging.info(u'注册')

原生loggging类+  TimedRotatingFileHandler类 实现按day hour second 切分

import logging

from logging.handlers import TimedRotatingFileHandler

log = logging.getLogger(loggerName)

formatter = logging.Formatter('%(name)-12s %(asctime)s level-%(levelname)-8s thread-%(thread)-8d %(message)s')   # 每行日志的前缀设置

fileTimeHandler = TimedRotatingFileHandler(BASIC_LOG_PATH + filename, "S", 1, 10)

fileTimeHandler.suffix = "%Y%m%d.log"  #设置 切分后日志文件名的时间格式 默认 filename+"." + suffix 如果需要更改需要改logging 源码

fileTimeHandler.setFormatter(formatter)

logging.basicConfig(level = logging.INFO)

fileTimeHandler.setFormatter(formatter)

log.addHandler(fileTimeHandler)

try:

    log.error(msg)

except Exception, e:

    print "writeLog error"

finally:

   log.removeHandler(fileTimeHandler)

值 interval的类型

S 秒

M 分钟

H 小时

D 天

W 周

midnight 在午夜


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11541236.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存