Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将python日志记录更改为显示从脚本执行开始经过的时间?_Python_Logging - Fatal编程技术网

如何将python日志记录更改为显示从脚本执行开始经过的时间?

如何将python日志记录更改为显示从脚本执行开始经过的时间?,python,logging,Python,Logging,我想修改python日志记录,以记录脚本启动(或日志记录模块初始化)后经过的时间 我在日志模块中找到了relativeCreated变量,但这给了我毫秒级的精度,这只会对日志进行垃圾邮件处理,更难看到时间的去向或日志运行的方式 我怎样才能做到这一点?我不确定您是否可以使用日志记录python模块做到这一点(我可能错了) 但是,如果您需要应用程序的运行时,我会说您应该在变量中捕获应用程序启动时的时间(使用time模块)。一旦捕捉到时间,您就可以将该变量传递给记录器,以便在遇到错误时计算差值。首先,

我想修改python日志记录,以记录脚本启动(或日志记录模块初始化)后经过的时间

我在日志模块中找到了
relativeCreated
变量,但这给了我毫秒级的精度,这只会对日志进行垃圾邮件处理,更难看到时间的去向或日志运行的方式


我怎样才能做到这一点?

我不确定您是否可以使用
日志记录
python模块做到这一点(我可能错了)


但是,如果您需要应用程序的运行时,我会说您应该在变量中捕获应用程序启动时的时间(使用
time
模块)。一旦捕捉到时间,您就可以将该变量传递给记录器,以便在遇到错误时计算差值。

首先,我会想到这一点

  • 计算脚本启动时间和当前时间之间的时间差
  • 为此使用datetime模块(计算epoh秒并返回时间戳)
  • 将loggin模块的结果插入消息部分
    现在,我没有编写任何代码来激励您阅读更多关于提到的模块的内容。

    您可以使用
    logging.Formatter
    子类,该子类从
    LogRecord
    传递到其
    format
    方法,将其格式化为分钟:秒,并以格式字符串的形式输出,例如,在格式字符串中使用不同的占位符,例如
    %(adjustedTime)s


    您可以将
    格式定义为_分钟_和_秒
    以返回格式化的相对时间。

    为什么?为什么不在程序启动时记录呢?如果没有完整日期,您的日志将丢失一些上下文。可以通过创建格式字符串来设置日志消息的格式:
    Format='%(asctime)-15s%(消息)s';logging.basicConfig(format=format)
    Vinay的回答很好地解决了您的问题-您不想接受吗?
    000:00 DEBUG bla bla
    000:01 ERROR wow! ... this is measured in minutes:seconds
    
    class MyFormatter(logging.Formatter):
        def format(self, record):
            record.adjustedTime = format_as_mins_and_secs(record.relativeCreated)
            return super(MyFormatter, self).format(record)