日志配置

参考文档

python 代码配置

此种方式在单个脚本文件中使用非常方便,缺点是不易于管理 ```python import logging import logging.handlers

create logger

logger = logging.getLogger(file) logger.setLevel(logging.DEBUG)

创建处理器

ch = logging.StreamHandler() fh = logging.handlers.TimedRotatingFileHandler(“log”,when=”D”,interval=1,backupCount=1,encoding=”utf-8”)

记录格式

formatter_1 = logging.Formatter(‘%(name)s - %(levelname)s - %(message)s’) formatter_2 = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s’,datefmt=”%Y-%m-%d %H:%M:%S”)

ch.setFormatter(formatter_1) fh.setFormatter(formatter_2)

添加处理器

logger.addHandler(ch) logger.addHandler(fh)

‘application’ code

logger.debug(‘debug message’) logger.info(‘info message’) logger.warning(‘warn message’) logger.error(‘error message’) logger.critical(‘critical message’)

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


#### YAML 文件配置
此种配置方式非常简洁,适于在多文件或项目中使用
```yaml
# config.yml
version: 1
formatters:
  console:
    format: '%(filename)s - %(lineno)s - %(levelname)s - %(message)s'
  file:
    format: '%(asctime)s - %(filename)s - %(lineno)s - %(levelname)s - %(message)s'
    datefmt: '%Y-%m-%d %H:%M:%S'

handlers:
  h1:
    class: logging.StreamHandler
    level: DEBUG
    formatter: console
    stream: ext://sys.stdout
  h2:
    class: logging.handlers.RotatingFileHandler
    level: ERROR
    formatter: file
    filename: logconfig.log
    maxBytes: 1024
    backupCount: 3

loggers:
  pro:
    level: DEBUG
    handlers: [h1,h2]
    propagate: no

#root:
#  level: DEBUG
#  handlers: [h1]

调用方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# pip install PyYAML
import logging.config
import logging
import yaml

with open('config.yml', 'r') as f:
    config = yaml.safe_load(f)
logging.config.dictConfig(config)

logger = logging.getLogger('pro')
logger.debug("debug")
logger.info("info")
logger.warning("warning")
logger.error("error")