#! /usr/bin/env python
# -*- coding: utf-8 -*-
import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
'''
CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET
如果这里设置为logger.setLevel(logging.ERROR)
那么下面代码中输出的info.log和warn.log都是空的
'''
# create a file handler
handler_info = logging.FileHandler('info.log')
handler_info.setLevel(logging.INFO)
# create a logging format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler_info.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(handler_info)
# create a file handler
handler_warn = logging.FileHandler('warn.log')
handler_warn.setLevel(logging.WARNING)
# create a logging format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler_warn.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(handler_warn)
logger.info('info baby')
logger.warning('warning baby')
'''
CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET
results:
warn.log:
2018-05-10 10:25:12,148 - __main__ - WARNING - warning baby
info.log:
2018-05-10 10:25:12,148 - __main__ - INFO - info baby
2018-05-10 10:25:12,148 - __main__ - WARNING - warning baby
'''
http://nodeca.github.io/js-yaml/
这是一个yaml转换为json的在线demo
version: 1
disable_existing_loggers: False
formatters:
simple:
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: simple
stream: ext://sys.stdout
info_file_handler:
class: logging.handlers.RotatingFileHandler
level: INFO
formatter: simple
filename: info.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
error_file_handler:
class: logging.handlers.RotatingFileHandler
level: ERROR
formatter: simple
filename: errors.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
loggers:
my_module:
level: ERROR
handlers: [console]
propagate: no
root:
level: INFO
handlers: [console, info_file_handler, error_file_handler]
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import logging
import os
import logging.config
import yaml
def setup_logging(
default_path='logging.yaml',
default_level=logging.INFO,
env_key='LOG_CFG'):
"""Setup logging configuration
"""
path = default_path
value = os.getenv(env_key, None)
if value:
path = value
if os.path.exists(path):
with open(path, 'rt') as f:
config = yaml.load(f.read())
logging.config.dictConfig(config)
else:
logging.basicConfig(level=default_level)
setup_logging(default_path="logging.yaml")
logger = logging.getLogger("deepwalk")
logger.warning("I love you")
简单的将日志打印到屏幕
import logging
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
屏幕上打印:
WARNING:root:This is warning message
默认情况下,logging将日志打印到屏幕,日志级别为WARNING;
日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。
通过logging.basicConfig函数对日志的输出格式及方式做相关配置