当使用loggingpython中的模块进行日志记录时.为每个类定义记录器是最佳做法吗?
考虑到一些事情会是冗余的,例如文件日志位置,我正在考虑将日志记录抽象到它自己的类,并将一个实例导入我需要记录的每个类中.但是我不确定这是不是最好的做法?
Vin*_*jip 25
最佳实践是遵循Python的软件(de)组合规则 - 模块是Python软件的单元,而不是类.因此,推荐的方法是使用
logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)
在每个模块中,并配置主脚本的日志记录(使用basicConfig()或dictConfig()).
记录器是单件 - 没有必要传递它们或将它们存储在类的实例中.
小智 19
使用JSON或YAML日志记录配置 - 在Python 2.7之后,您可以从dict加载日志记录配置.这意味着您可以从JSON或YAML文件加载日志记录配置.
Yaml示例 -
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]
Run Code Online (Sandbox Code Playgroud)
Ref - Good-logging-practice-in-python
| 归档时间: |
|
| 查看次数: |
16570 次 |
| 最近记录: |