Skip to content

Instantly share code, notes, and snippets.

@ResolveWang
Last active November 3, 2016 01:48
Show Gist options
  • Save ResolveWang/36f11ecf0b86942029ca1e356d199518 to your computer and use it in GitHub Desktop.
Save ResolveWang/36f11ecf0b86942029ca1e356d199518 to your computer and use it in GitHub Desktop.
python日志demo
# 最原始的方式
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import logging
# create logger
logger = logging.getLogger('simple_example')
# Set default log level
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.WARN)
ch2 = logging.FileHandler('logging.log')
ch2.setLevel(logging.INFO)
# create formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# add formatter to ch
ch.setFormatter(formatter)
ch2.setFormatter(formatter)
# add ch to logger
# The final log level is the higher one between the default and the one in handler
logger.addHandler(ch)
logger.addHandler(ch2)
# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
# 通过dict配置
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import logging
import logging.config
config = {
'version': 1,
'formatters': {
'simple': {
'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
},
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'level': 'DEBUG',
'formatter': 'simple'
},
'file': {
# 如果没有使用并发的日志处理类而使用原始类logging.FileHandler,在多实例的情况下日志会出现缺失
'class': 'cloghandler.ConcurrentRotatingFileHandler',
'filename': 'logging.log',
'level': 'DEBUG',
'formatter': 'simple'
# 当达到10MB时分割日志
'maxBytes': 1024 * 1024 * 10,
# 最多保留50份文件
'backupCount': 50,
# If delay is true,
# then file opening is deferred until the first call to emit().
'delay': True,
'filename': 'logs/mysite.log',
},
},
'loggers':{
'root': {
'handlers': ['console'],
'level': 'DEBUG',
# 'propagate': True,
},
'simple': {
'handlers': ['console', 'file'],
'level': 'WARN',
}
}
}
logging.config.dictConfig(config)
print 'logger:'
logger = logging.getLogger('root')
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
print 'logger2:'
logger2 = logging.getLogger('simple')
logger2.debug('debug message')
logger2.info('info message')
logger2.warn('warn message')
logger2.error('error message')
logger2.critical('critical message')
# 通过ini配置
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import logging
import logging.config
logging.config.fileConfig('logging_config.ini')
# create logger
logger = logging.getLogger('root')
# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
# logging_config.ini
[loggers]
keys=root,simpleExample
[handlers]
keys=consoleHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_simpleExample]
level=INFO
handlers=consoleHandler
qualname=simpleExample
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment