需要使用Python进行每日日志轮换(0utc)

2024-04-12

我是公认的 Python 菜鸟。我编写了一个小记录器,它从串行端口获取数据并将其写入日志文件。我有一个小程序,可以打开文件进行追加、写入,然后关闭。我怀疑这可能不是最好的方法,但这是我到目前为止所想到的。

我希望能够让它在 00 UTC 自动执行日志旋转,但到目前为止,我使用 RotatingFileHandler 执行此操作的尝试失败了。

代码如下所示:

import time, serial, logging, logging.handlers,os,sys
from datetime import *

CT12 = serial.Serial()
CT12.port = "/dev/ct12k"
CT12.baudrate = 2400
CT12.parity = 'E'
CT12.bytesize = 7
CT12.stopbits = 1
CT12.timeout = 3

logStart = datetime.now()
dtg = datetime.strftime(logStart, '%Y-%m-%d %H:%M:%S ')
ctlA = unichr(1)
bom = unichr(2)
eom = unichr(3)
bel = unichr(7)
CT12Name = [ctlA, 'CT12-NWC-test']
CT12Header = ['-Ceilometer Logfile \r\n', '-File created: ', dtg, '\r\n']

def write_ceilo ( text ) :
    f = open ('/data/CT12.log', 'a')
    f.write (text)
    f.close ()

write_ceilo(''.join(CT12Header))

CT12.open()

discard = CT12.readlines()
#print (discard)

while CT12.isOpen():
    response = CT12.readline()
    if len(response) >= 3:
        if response[0] == '\x02' :
            now=datetime.now()
            dtg=datetime.strftime(now, '-%Y-%m-%d %H:%M:%S\r\n')
            write_ceilo(dtg)
            write_ceilo(''.join(CT12Name))
            write_ceilo(response)

我该怎么做才能使其自动轮换,附上轮换日期或序列号以供识别。我不想轮换其中任何一个,只是保留数据的每日日志文件。 (或者可能是每小时的文件?)


对于通过 Google 到达的任何人,请不要在使用日志文件时通过调用移动命令的系统副本等将日志文件从记录器下移出。

您正在寻找的是定时旋转文件处理程序 https://docs.python.org/2.6/library/logging.html#logging.TimedRotatingFileHandler:

import time

import logging
from logging.handlers import TimedRotatingFileHandler

# format the log entries
formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s')

handler = TimedRotatingFileHandler('/path/to/logfile.log', 
                                   when='midnight',
                                   backupCount=10)
handler.setFormatter(formatter)
logger = logging.getLogger(__name__)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)

# generate example messages
for i in range(10000):
    time.sleep(1)
    logger.debug('debug message')
    logger.info('informational message')
    logger.warn('warning')
    logger.error('error message')
    logger.critical('critical failure')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要使用Python进行每日日志轮换(0utc) 的相关文章

随机推荐

  • 无法访问类的内部接口

    我有一个用于 recyclerview 的适配器类 public abstract class RecyclerViewArrayAdapter
  • 如何配置 BizTalk WCF-SQL 适配器以从 SQL Server 2012“始终在线”副本数据库获取数据?

    我们有一个客户端将使用 SQL Server 2012 的 AlwaysOn 可用性功能 他们希望将 BizTalk WCF SQL 端口连接到只读副本 The 文档 http technet microsoft com en us lib
  • .net 4.0 中引用类型的 volatile

    我很困惑volatile供参考类型 据我了解 对于原始类型 volatile可以立即反映来自另一个线程的值变化 对于引用类型 可以立即反映地址变化 但是 对象的内容呢 它们仍然被缓存吗 假设List Add 是一个原子操作 例如 我有 cl
  • React Native:执行 UI 块时抛出异常

    我正在构建一个 iOS React Native 应用程序 目前正在使用 React Native swipe card 包为我的应用程序构建 tinder 例如刷卡 该应用程序工作正常 但是当我向左或向右滑动卡片 并在它离开屏幕一半时放开
  • 如何在rails控制器中获取上传文件的文件名

    在我的控制器中 如果我根据建议给出以下内容 filename params upload result filename original filename 我正进入 状态 undefined method original filenam
  • Python 是否有相当于 Java 的 AWT Robot 类? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道类似的Python类Java机器人 http java sun com javase 6 docs api java awt Ro
  • WPF DataGrid - 禁用时保留选择

    我已经为此苦苦挣扎了一段时间了 我的应用程序中有一个 主 详细信息 布局 并且像许多其他人一样面临着 DataGrid 在禁用它时丢失其选择的问题 本质上 从列表中选择一个元素来填充一系列字段后 用户按下 编辑 这会禁用 DataGrid
  • ical导出的格式化时间

    我在 jquery 中创建了一个导出到 ical 的日历 但是 我对日期时间有一些问题 ical 导出脚本需要以下格式的日期 时间 19970714T170000Z 有谁知道这是什么以及我应该如何准备我的字符串 Thanks 阅读 RFC
  • 'effect' 在 jsfiddle 中工作正常,但在实时代码中不起作用([object Object] 没有方法 'effect' )

    相关 但不是修复 jQuery 问题 没有方法 https stackoverflow com questions 2988485 jquery issue an object has no method 我收到错误Object objec
  • for 循环范围不起作用 ksh

    我试过这个 bin ksh for i in 1 10 do echo Welcome i times done 在 AIX 机器的 Ksh 中 我得到的输出为 欢迎 1 10 次 这是怎么回事 不是应该打印从1到10吗 编辑 根据 per
  • Windows 上的正则表达式 PCRE

    如何在 Windows 上安装 regex pcre cabal install regex pcre Resolving dependencies Configuring regex pcre 0 94 4 cabal Missing d
  • Dapper SqlMapperExtensions / Dapper.Contrib?

    好像有一个DapperExtensions项目 但是Dapper项目中还有一个SqlMapperExtensions类 有重叠吗 其中一个比另一个更受青睐吗 我找不到有关 Dapper Contrib 的任何文档 Dapper Contri
  • 用于运行异步请求的 Python Celery 与线程库 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在运行一个解析大量数据的 python 方法 由于它是时间密集型的 我想在单独的线程上异步运行它 以便用户仍然可以访问网站 UI 如果用户退
  • 如何关闭 AWS S3 客户端连接

    关闭 aws s3 客户端连接的协议是什么 Override public boolean connect if connected return false else s3Client new AmazonS3Client credent
  • Python:检查目录是否是别名

    python 是否有一个简单的函数来检查目录是否是实际目录或者它是否只是另一个目录的别名 我试图列出目录中的所有文件 文件夹 但由于这些别名文件夹 我丢失了如下所示的内容 系统 库 Java JavaVirtualMachines 1 6
  • 我应该如何处理 WiX 安装程序中的产品升级?

    我有一个相当大的 WiX 安装程序 250 Mb 以上 我正在尝试制定合适的升级策略 安装程序中的大多数文件都不会更改 并且当只有一两个文件发生更改时 我们不希望分发整个包 我研究了主要和次要升级 我的理解是 如果产品 ID 发生变化 只要
  • 如何使用 Node JS / Webdriver.io / Chimp 打印为 PDF?

    我正在尝试在 Node JS 中使用 Chimp Webdriver io Selenium 来测试我的 media printCSS 确保当人们从我的网站打印时一切都正确显示 如何以编程方式让 Chrome Firefox 打印为 PDF
  • 数据而不是架构的数据库版本/更改控制?

    在阅读了这里和周围的几篇文章后 我意识到开发团队中的数据库版本控制实际上非常重要 到目前为止我一直在使用一个简单的dump whole database每次有更新时 如果只有 1 个表被更改 有时我们只需转储单个表然后重新导入即可 不是最好
  • 使用jquery动态添加文本框

    这段代码有什么问题 只有首先添加和删除链接才有效
  • 需要使用Python进行每日日志轮换(0utc)

    我是公认的 Python 菜鸟 我编写了一个小记录器 它从串行端口获取数据并将其写入日志文件 我有一个小程序 可以打开文件进行追加 写入 然后关闭 我怀疑这可能不是最好的方法 但这是我到目前为止所想到的 我希望能够让它在 00 UTC 自动