Django的logger配置
Django日志配置 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 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '%(levelname)s %(asctime)s %(pathname)s %(module)s %(lineno)s %(process)d %(thread)d %(message)s' } }, 'loggers': { 'django': { 'handlers': ['default'], 'propagate': True, 'level': 'DEBUG', 'filters': ['special'] } }, 'handlers': { 'default': { 'level': 'DEBUG', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/var/logs/django/default.log', 'maxBytes': 1024 * 1024 * 5, 'backupCount': 5, 'formatter': 'verbose', 'filters': ['special'] } }, 'filters': { # 过滤器 'special': { # 使用自定义的web.my_logging.ContextFilter,别名special,可以接受其他的参数 '()': 'web.my_logging.ContextFilter' } }, } 配置分析说明 version 保留字。 disable_existing_loggers 是否禁用已经存在的logger实例。 如果LOGGING 中的disable_existing_loggers 键为True(默认值),那么默认配置中的所有logger 都将禁用。 Logger 的禁用与删除不同;logger 仍然存在,但是将默默丢弃任何传递给它的信息,也不会传播给上一级logger。所以,你应该非常小心使用'disable_existing_loggers': True;它可能不是你想要的。你可以设置disable_existing_loggers 为False,并重新定义部分或所有的默认loggers;或者你可以设置LOGGING_CONFIG 为 None,并 自己处理logging 配置。 Logging 的配置属于Django setup() 函数的一部分。所以,你可以肯定在你的项目代码中logger 是永远可用的。 formatters 定义输出的日志格式。 常用的格式化属性: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 %(name)s Logger的名字 %(levelname)s 文本形式的日志级别 %(message)s 用户输出的消息 %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒 %(levelno)s 数字形式的日志级别 %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有 %(filename)s 调用日志输出函数的模块的文件名 %(module)s 调用日志输出函数的模块名 %(funcName)s 调用日志输出函数的函数名 %(lineno)d 调用日志输出函数的语句所在的代码行 %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示 %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数 %(thread)d 线程ID。可能没有 %(threadName)s 线程名。可能没有 %(process)d 进程ID。可能没有 其他格式化属性请参 LogRecord attributes ...