我logging在Python中使用该模块来编写调试和错误消息.
我想写入所有logging.DEBUG或更高的消息.
但是,我只想打印到屏幕上logging.WARNING或更大的消息.
只使用一个Logger和一个可能FileHandler吗?
bde*_*ker 12
正如已经提到的那样,处理程序很容易创建和添加,你可能最好只使用两个处理程序.但是,如果由于某种原因你想要坚持使用,那么Python日志记录的食谱会有一个或多或少描述你想要做什么的部分:记录到控制台和文件,但是在不同的级别(它甚至会告诉你如何做不同的格式).它只用一个StreamHandler而不是一个FileHandler,但是:
import logging
# set up logging to file - see previous section for more details
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M',
filename='/temp/myapp.log',
filemode='w')
# define a Handler which writes INFO messages or higher to the sys.stderr
console = logging.StreamHandler()
console.setLevel(logging.INFO)
# set a format which is simpler for console use
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
# tell the handler to use this format
console.setFormatter(formatter)
# add the handler to the root logger
logging.getLogger('').addHandler(console)
# 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.')
Run Code Online (Sandbox Code Playgroud)
编辑:正如评论中所讨论的,这段代码仍会生成两个处理程序,但通过使用basicConfig()"隐藏"一个构造.我强烈建议您明确地创建两者.
| 归档时间: |
|
| 查看次数: |
6698 次 |
| 最近记录: |