forked from yidao620c/python3-cookbook
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogmsg.py
More file actions
52 lines (41 loc) · 1.63 KB
/
logmsg.py
File metadata and controls
52 lines (41 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
Topic: sample
Filter(logname),只允许来自logname或其子日志的消息通过
app.net是app的子日志
消息传播propagate和分层记录器:消息会传播给父记录器
log.propagate属性获取是否传播标志
"""
import logging
import logging.handlers as handlers
import logging.config as config
__author__ = 'Xiong Neng'
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
handlers=[logging.FileHandler('message.log', 'a', 'utf-8')])
# 模块基本用_,类级别用__
_log = logging.getLogger('app.' + __name__)
class FilterFunc(logging.Filter):
def __init__(self, name):
super().__init__()
self.funcname = name
def filter(self, record):
if record.funcName == self.funcname: return False
def my_log():
host = '10.0.0.175'
port = 8080
# 不要用 'xxxx' % (aa, bb)去手动格式化消息
_log.error('error to connect to %s:%d', host, port)
_log.addFilter(FilterFunc('foo')) # 将忽略来自foo()函数的所有消息
lgg = logging.getLogger('app.network.client')
lgg.propagate = False # 关闭传播属性
lgg.error('do you see me?') # 但是还是可以看到
lgg.setLevel(logging.CRITICAL)
lgg.error('now you see me?')
logging.disable(logging.DEBUG) # 全局关闭某个级别
# 使用log配置文件,在main函数中执行一次即可
config.fileConfig('applogcfg.ini')
if __name__ == '__main__':
my_log()