python日志记录到多个文件

python日志记录到多个文件,python,django,logging,Python,Django,Logging,是否有人有将python登录到2个或更多不同日志文件的示例 例如,我想登录到“/tmp/foo.log”和“/tmp/bar.log” 提前谢谢 T以下是一个示例: import logging logger1 = logging.getLogger('1') logger1.addHandler(logging.FileHandler('/tmp/logger1')) logger2 = logging.getLogger('2') logger2.addHandler(logging.Fil

是否有人有将python登录到2个或更多不同日志文件的示例

例如,我想登录到“/tmp/foo.log”和“/tmp/bar.log”

提前谢谢

T

以下是一个示例:

import logging
logger1 = logging.getLogger('1')
logger1.addHandler(logging.FileHandler('/tmp/logger1'))
logger2 = logging.getLogger('2')
logger2.addHandler(logging.FileHandler('/tmp/logger2'))

logger1.error('1')
logger2.error('2')
那么


下面是一个基于logging.html中示例的完整工作示例。需要注意的主要问题是,您必须确保为根记录器设置日志级别,以便与文件正确交互

import logging

logging.getLogger('').setLevel(logging.DEBUG)
def create_log_file(filename, level=logging.INFO):
    handler = logging.FileHandler(filename)
    handler.setLevel(level)
    formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
    handler.setFormatter(formatter)
    logging.getLogger('').addHandler(handler)

create_log_file('/temp/log1.log', logging.DEBUG)
create_log_file('/temp/log2.log', logging.INFO)

# Now, we can log to the root logger, or any other logger. First the root...
logging.info('Jackdaws love my big sphinx of quartz.')

# Now, define a couple of other loggers which might represent areas in your
# application:

logger1 = logging.getLogger('myapp.area1')
logger2 = logging.getLogger('myapp.area2')

logger1.debug('Quick zephyrs blow, vexing daft Jim.')
logger1.info('How quickly daft jumping zebras vex.')
logger2.warning('Jail zesty vixen who grabbed pay from quack.')
logger2.error('The five boxing wizards jump quickly.')

但在本例中,所有根消息也将显示在log1.log和log2.log中,因为这只是一个示例。如果你想,你可以将处理程序附加到另一个日志。为什么你攻击这篇文章,我只是问了一个例子,Duncan的文章对我的帮助比文档要好得多。谢谢邓肯的帮助。但还有一个问题,是否可以在每个日志记录程序上进行轮换?@Hein:试试Python 3.2版本的文档,它们可能比2.7版本更有意义:。是的,
logging
提供了一个
RotatingFileHandler
,让您可以轻松地旋转日志文件。
import logging

logging.getLogger('').setLevel(logging.DEBUG)
def create_log_file(filename, level=logging.INFO):
    handler = logging.FileHandler(filename)
    handler.setLevel(level)
    formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
    handler.setFormatter(formatter)
    logging.getLogger('').addHandler(handler)

create_log_file('/temp/log1.log', logging.DEBUG)
create_log_file('/temp/log2.log', logging.INFO)

# Now, we can log to the root logger, or any other logger. First the root...
logging.info('Jackdaws love my big sphinx of quartz.')

# Now, define a couple of other loggers which might represent areas in your
# application:

logger1 = logging.getLogger('myapp.area1')
logger2 = logging.getLogger('myapp.area2')

logger1.debug('Quick zephyrs blow, vexing daft Jim.')
logger1.info('How quickly daft jumping zebras vex.')
logger2.warning('Jail zesty vixen who grabbed pay from quack.')
logger2.error('The five boxing wizards jump quickly.')