log日志(django)

Log等级

DEBUG最详细的⽇志信息,典型应⽤场景是 问题诊断
INFO信息详细程度仅次于DEBUG,通常只记录关键节点信息,⽤于确认⼀切都是按照我们预期的那样进⾏⼯作

WARNING当某些不期望的事情发⽣时记录的信息(如,磁盘可⽤空间较低),但是此时应⽤程序还是正常运⾏的

ERROR由于⼀个更严重的问题导致某些功能不能正常运⾏时记录的信息 如IO操作失败或者连接问题

CRITICAL当发⽣严重错误,导致应⽤程序不能继续运⾏时记录的信息

Log模块的四⼤组件

Loggers
提供应⽤程序代码直接使⽤的接⼝

Handlers
⽤于将⽇志记录发送到指定的⽬的位置

 FileHandler:logging.FileHandler;⽇志输出到⽂件
 RotatingHandler:logging.handlers.RotatingHandler;⽇志回滚⽅式,⽀持⽇志⽂件最⼤数量和⽇志⽂件回滚
 SMTPHandler:logging.handlers.SMTPHandler;远程输出⽇志到邮件地址
 HTTPHandler:logging.handlers.HTTPHandler;通过"GET"或者"POST"远程输出到HTTP服务器

Filters
提供更细粒度的⽇志过滤功能,⽤于决定哪些⽇志记录将会被输出(其它的⽇志记录将会被忽略)

Formatters
⽤于控制⽇志信息的最终输出格式

%(levelno)s:打印⽇志级别的数值
 %(levelname)s:打印⽇志级别的名称
 %(pathname)s:打印当前执⾏程序的路径,其实就是sys.argv[0]
 %(filename)s:打印当前执⾏程序名
 %(funcName)s:打印⽇志的当前函数
 %(lineno)d:打印⽇志的当前⾏号
 %(asctime)s:打印⽇志的时间
 %(thread)d:打印线程ID
 %(threadName)s:打印线程名称
 %(process)d:打印进程ID
 %(message)s:打印⽇志信息

示例

生成日志对象
 import logging
 logger = logging.getLogger(__name__)
 logger.setLevel(level = logging.INFO)日志等级
 设置handler
 handler = logging.FileHandler(“log.txt”)输出文件名
 指定日志格式
 formatter = logging.Formatter('%(asctime)s - %(name)s - %
(levelname)s - %(message)s') 输出格式
 handler.setFormatter(formatter)
 logger.addHandler(handler)
 logger.info("Start print log")
 logger.debug("Do something")
 logger.warning("Something maybe fail.")
 logger.info("Finish")

Django中的配置(重点)

与邮件结合使用

# 邮件配置
# smtp服务的邮箱服务器
EMAIL_HOST = 'smtp.126.com'
# smtp服务固定的端口是25
EMAIL_PORT = 25   # 也有可能是465
#发送邮件的邮箱
EMAIL_HOST_USER = 'landmark_csl@126.com'
#在邮箱中设置的客户端授权密码
EMAIL_HOST_PASSWORD = 'csl111'
#收件人看到的发件人 <此处要和发送邮件的邮箱相同>
EMAIL_FROM = 'python<landmark_csl@163.com>'

ADMINS = (
 ('tom','*******@163.com'),
 )
 #配置邮件
 EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend'
 SERVER_EMAIL=EMAIL_HOST_USER
 LOGGING = {
 'version': 1,
 'disable_existing_loggers': True,
 'formatters': {
 'standard': {
 'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%
(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'}
 },
 'filters': { #过滤条件
 #要求debug是False才记录
 'require_debug_false': {
 '()': 'django.utils.log.RequireDebugFalse',
 }
 },
 'handlers': {
 'null': {
 'level': 'DEBUG',
 'class': 'logging.NullHandler',
 },
 'mail_admins': {#⼀旦线上代码报错 邮件提示
 'level': 'ERROR',
 'class': 'django.utils.log.AdminEmailHandler',
 'filters': ['require_debug_false'],
 },
 'debug': {
 'level': 'DEBUG',
 'class': 'logging.handlers.RotatingFileHandler',
 'filename': os.path.join(BASE_DIR, "log", 'debug.log'), 
# ⽂件路径
 'maxBytes': 1024 * 1024 * 5, #5兆的数据
 'backupCount': 5, #允许有5这样的⽂件
 'formatter': 'standard', #格式
 },
 'console':{
 'level': 'DEBUG',
 'class': 'logging.StreamHandler',
 'formatter': 'standard',
 },
 },
 'loggers': {
 'django': {
 'handlers': ['console'],
 'level': 'DEBUG',
 'propagate': False
 },
 'django.request': {
 'handlers': ['debug','mail_admins'],
 'level': 'ERROR',
 'propagate': True,#是否继承⽗类的log信息
 },
 # 对于不在 ALLOWED_HOSTS 中的请求不发送报错邮件
 'django.security.DisallowedHost': {
 'handlers': ['null'],
 'propagate': False,
 },
 }
 }

视图函数使用

import logging
 logger = logging.getLogger("django") # 为loggers中定义的名称
 logger.info("some info...")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django日志配置可以在 settings.py 文件中进行配置,具体步骤如下: 1. 导入 logging 模块: ```python import logging ``` 2. 配置日志的格式: ```python LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'class': 'logging.StreamHandler', }, 'file': { 'class': 'logging.handlers.RotatingFileHandler', 'filename': 'django.log', 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, }, }, 'loggers': { 'django': { 'handlers': ['console', 'file'], 'level': 'DEBUG', }, }, } ``` 在上面的配置中,使用了一个 RotatingFileHandler,将日志输出到一个名为 django.log 的文件中。maxBytes 和 backupCount 参数用于控制日志文件的大小和数量。当日志文件大小超过 maxBytes 时,会自动创建一个新的日志文件,并将旧的日志文件备份到一个新的文件中。 3. 在代码中使用日志: ```python import logging logger = logging.getLogger('django') def my_view(request): logger.debug('This is a debug message') logger.info('This is an info message') logger.warning('This is a warning message') logger.error('This is an error message') logger.critical('This is a critical message') ``` 在上面的代码中,通过 getLogger 方法获取名为 djangoLogger 对象,并使用其 debug、info、warning、error 和 critical 方法输出不同级别的日志信息。 注意:在上面的配置中,使用了一个名为 djangologger,这是 Django 默认使用的 logger。如果你想要使用一个不同的 logger,需要在配置中添加对应的 handlers 和 loggers。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值