每次在python中旋转日志时执行操作

时间:2016-06-17 06:03:51

标签: python logging log-rotation

我想记录一行描述记录器创建的每个日志文件的日志信息。

目前我正在使用一个独立的记录器进程,它将一直运行。它从队列接收信息并将其写入日志。许多模块都会将信息传递给此日志记录队列。

我目前的示例代码是:

import logging
import time

from logging.handlers import TimedRotatingFileHandler as rotate

def info_log(log_queue):
    logger = logging.getLogger("My Log")
    logger.setLevel(logging.INFO)

    handler = rotate("log/info.log", when="D", interval=30, backupCount=13)
    logger.addHandler(handler)

    desc_string = "yyyy/mm/dd-HH:MM:SS \t name \t country \n"
    logger.info(desc_string)

    while True:
        result=log_queue.get().split("#")
        logger.info(result[0] + "\t" result[1] + "\t" + result[2] + "\n")

每次轮换日志时,我都希望desc_string首先写入日志文件。
我该怎么做?

或者换句话说,如何在日志旋转时知道程序?

1 个答案:

答案 0 :(得分:1)

也许你可以简单地从TimedRotatingFileHandler覆盖doRollover方法?

import javax.swing.*;

class myFrame extends JFrame {

    // private mypanel p1;

    myFrame() /*here I'm getting error that "invalid decleration, return type required */ {
        this.setSize(400, 500);
        this.setTitle("My First GUI");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mypanel p=new mypanel();
        this.add(p);
        setVisible(true);
    }
}

class mypanel extends JPanel {

    private JButton b1;

    mypanel() {
        b1 = new JButton("Click me");
        this.add(b1);
    }
}

class mygui {

    public static void main(String args[]) {
        myFrame f = new myFrame();
        myFrame f1 = new myFrame();
    }
}