- 論壇徽章:
- 0
|
一個(gè)簡(jiǎn)單的測(cè)試,兩個(gè)線程,在線程中打印日志,日志打印到文件中,發(fā)現(xiàn)多線程無(wú)法打印日志。
thread1.py代碼如下:- import logger.log
- import threading
- import t
- log = logger.log.Logger.getLogger(__name__)
- def thread1():
- t.test('1')
- def thread2():
- t.test('2')
- if __name__ == '__main__':
- log.debug('start main')
- t1 = threading.Timer(10.0, thread1)
- t1.start()
- t2 = threading.Timer(10.0, thread2)
- t2.start()
- t1.join()
- t2.join()
復(fù)制代碼 t.py代碼如下:- import logging
- import logging.config
- logging.config.fileConfig('../conf/log.conf')
- log = logging.getLogger(__name__)
- def test(name):
- log.debug( 'thread' + name)
復(fù)制代碼 日志配置文件如下:- # logger configure file
- [loggers]
- keys=root,example
- [handlers]
- keys=consoleHandler,rotateFileHandler
- [formatters]
- keys=simpleFormatter
- [formatter_simpleFormatter]
- format=[%(asctime)s][%(levelname)s][%(name)s][%(filename)s:%(lineno)s]:%(message)s
- [logger_root]
- level=DEBUG
- handlers=consoleHandler,rotateFileHandler
- [logger_example]
- level=DEBUG
- handlers=consoleHandler,rotateFileHandler
- qualname=example
- propagate=0
- [handler_consoleHandler]
- class=StreamHandler
- level=DEBUG
- formatter=simpleFormatter
- args=(sys.stdout,)
- [handler_rotateFileHandler]
- class=handlers.RotatingFileHandler
- level=DEBUG
- formatter=simpleFormatter
- args=('hcagent.log', 'a', 200000, 10)
復(fù)制代碼 結(jié)果打印的日志如下:- [2014-08-29 16:48:16,132][DEBUG][__main__][thread1.py:17]:start main
- [2014-08-29 17:14:59,849][DEBUG][__main__][thread1.py:17]:start main
- [2014-08-29 17:15:59,180][DEBUG][__main__][thread1.py:17]:start main
- [2014-08-29 17:16:40,759][DEBUG][__main__][thread1.py:17]:start main
- [2014-08-29 17:20:26,417][DEBUG][__main__][thread1.py:17]:start main
復(fù)制代碼 問(wèn)題:按理說(shuō)在t.py里邊打印的日志,應(yīng)該能夠打到hcagent.log里邊?可是為什么沒(méi)有呢?多線程需要做什么特殊處理?
懇請(qǐng)各位大神賜招 |
|