Contenu connexe
Similaire à 20151024 Taichung.py 講一些 Python Logging (20)
20151024 Taichung.py 講一些 Python Logging
- 2. Me?
•
== Chen Chun-Chia
== CCC
• MitraCloud
>>> Python/Django
>>> Android
2
- 37. handler
import logging
a = logging.getLogger('mylogger')
handler = logging.FileHandler('a.log')
a.addHandler(handler)
a.error('hahaha')
hahaha
a.log
37
- 38. handler
import logging
a = logging.getLogger('mylogger')
h1 = logging.FileHandler('1.log')
h2 = logging.FileHandler('2.log')
a.addHandler(h1)
a.addHandler(h2)
a.error('hahaha')
hahaha
1.log
hahaha
2.log
38
- 42. format
a = logging.getLogger('mylogger')
h1 = logging.FileHandler('1.log')
h2 = logging.FileHandler('2.log')
h1.setFormatter(
logging.Formatter('*** %(message)s ***'))
h2.setFormatter(
logging.Formatter('%(levelname)s:%(message)s'))
a.addHandler(h1)
a.addHandler(h2)
a.error('haha')
*** haha ***1.log
ERROR:haha2.log
42
- 45. level
a = logging.getLogger('mylogger')
h1 = logging.FileHandler('1.log')
h2 = logging.FileHandler('2.log')
h1.setLevel(logging.ERROR)
h2.setLevel(logging.WARNING)
a.addHandler(h1)
a.addHandler(h2)
a.error('error')
a.warning('warning')
error1.log
error
warning
2.log
45
- 49. Filter
class IpFilter(logging.Filter):
def filter(self, record):
record.ip = '192.168.1.2'
return True
logging.basicConfig(format='[%(ip)s] %(message)s')
a = logging.getLogger('mylogger')
f = IpFilter()
a.addFilter(f)
a.error('hahaha')
49
record: LogRecord
log
log LogRecord
- 55. Handler emit
class MyHandler(logging.Handler):
def __init__(self, widget):
super(MyHandler, self).__init__()
self._widget = widget
def emit(self, record):
msg = self.format(record)
cursor = self._widget.textCursor()
cursor.insertText(msg)
cursor.insertText('n')
55
- 57. 57
app = QApplication(sys.argv)
a = logging.getLogger('a')
widget = QPlainTextEdit()
h = MyHandler(widget)
a.addHandler(h)
widget.show()
a.error('hihi')
a.warning('lol')
sys.exit(app.exec_())
- 61. ...
f = logging.Formatter(‘*** %(name)s:%(message)s ***’)
my_handler = logging.FileHandler('a.log')
my_handler.setLevel(logging.DEBUG)
my_handler.setFormatter(f)
a = logging.getLogger('my_logger')
a.setLevel(logging.INFO)
a.addHandler(my_handler)
a.error('error')
a.info('info')
61
- 62. Dict Logging
f = logging.Formatter(‘*** %(name)s:%(message)s ***’)
my_handler = logging.FileHandler('a.log')
my_handler.setLevel(logging.DEBUG)
my_handler.setFormatter(f)
a = logging.getLogger('my_logger')
a.setLevel(logging.INFO)
a.addHandler(my_handler)
a.error('error')
a.info('info')
config = {
'version': 1,
'formatters': {
'my_formatter': {
'format': '*** %(name)s:%(message)s ***'
},
},
'handlers': {
'my_handler': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'a.log',
'formatter': 'my_formatter',
}
},
'loggers': {
'my_logger': {
'level': 'INFO',
'handlers': ['my_handler'],
}
},
}
62
- 63. Dict Logging
f = logging.Formatter(‘*** %(name)s:%(message)s ***’)
my_handler = logging.FileHandler('a.log')
my_handler.setLevel(logging.DEBUG)
my_handler.setFormatter(f)
a = logging.getLogger('my_logger')
a.setLevel(logging.INFO)
a.addHandler(my_handler)
a.error('error')
a.info('info')
config = {
'version': 1,
'formatters': {
'my_formatter': {
'format': '*** %(name)s:%(message)s ***'
},
},
'handlers': {
'my_handler': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'a.log',
'formatter': 'my_formatter',
}
},
'loggers': {
'my_logger': {
'level': 'INFO',
'handlers': ['my_handler'],
}
},
}
from logging.config import dictConfig
dictConfig(config)
63
- 66. ...
f = logging.Formatter(‘*** %(name)s:%(message)s ***’)
my_handler = logging.FileHandler('a.log')
my_handler.setLevel(logging.DEBUG)
my_handler.setFormatter(f)
a = logging.getLogger('my_logger')
a.setLevel(logging.INFO)
a.addHandler(my_handler)
a.error('error')
a.info('info')
66
- 67. logging
f = logging.Formatter(‘*** %(name)s:%(message)s ***’)
my_handler = logging.FileHandler('a.log')
my_handler.setLevel(logging.DEBUG)
my_handler.setFormatter(f)
a = logging.getLogger('my_logger')
a.setLevel(logging.INFO)
a.addHandler(my_handler)
a.error('error')
a.info('info')
[formatters]
keys=my_formatter
[handlers]
keys=my_handler
[loggers]
keys=root,my_logger
[formatter_my_formatter]
format=*** %(name)s:%(message)s ***
[handler_my_handler]
level=DEBUG
class=FileHandler
formatter=my_formatter
args=('a.log',)
[logger_my_logger]
level=INFO
handlers=my_handler
qualname=my_logger
[logger_root]
handlers=
my_logging.cfg
67
- 68. logging
f = logging.Formatter(‘*** %(name)s:%(message)s ***’)
my_handler = logging.FileHandler('a.log')
my_handler.setLevel(logging.DEBUG)
my_handler.setFormatter(f)
a = logging.getLogger('my_logger')
a.setLevel(logging.INFO)
a.addHandler(my_handler)
a.error('error')
a.info('info')
[formatters]
keys=my_formatter
[handlers]
keys=my_handler
[loggers]
keys=root,my_logger
[formatter_my_formatter]
format=*** %(name)s:%(message)s ***
[handler_my_handler]
level=DEBUG
class=FileHandler
formatter=my_formatter
args=('a.log',)
[logger_my_logger]
level=INFO
handlers=my_handler
qualname=my_logger
[logger_root]
handlers=
my_logging.cfg
from logging.config import fileConfig
fileConfig('my_logging.cfg')
68
- 85. Basic Tutorial & Advanced Tutorial
https://docs.python.org/3.5/howto/logging.html
Logging Cookbook
https://docs.python.org/3.5/howto/logging-cookbook.html
Python Library Document
https://docs.python.org/3.5/library/logging.html
85