【问题标题】:Django logging-log message is not saved in respective file !Django 日志记录消息未保存在相应文件中!
【发布时间】:2011-10-06 02:23:43
【问题描述】:

我是 django 的新手……我现在正在学习 Django 日志记录的概念……我的问题是日志消息不会保存在我在下面的代码中使用的文件中,

(在我的 settings.py 中)

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'simple': {
        'format': '%(asctime)s %(levelname)s %(name)s %(message)s'
    },
},
'handlers': {
    'default': {
        'level':'DEBUG',
        'class':'logging.handlers.RotatingFileHandler',
        'filename': '/home/linuxuser/mani/f/logs/msg.log',
        'maxBytes': 1024*1024*5, # 5 MB
        'backupCount': 5,
        'formatter':'simple',
    },
},
'loggers': {
    'sample': {
        'handlers': ['default'],
        'level': 'DEBUG',
        'propagate': True,
    },
}

}

(在我看来.py)

import logging   
import logging.handlers   
from django.conf import settings   
logger = logging.getLogger('sample')   

def empdel(request,id):   
    e = get_object_or_404(emp, pk=id)   
    e.delete()   
    logger.info('A row is deleted successfully !!!') [# here is my prob..this msg is not saved in '/home/linuxuser/mani/f/logs/msg.log' #]

    return HttpResponseRedirect('/empthanks/')   

为什么日志消息没有保存在该文件中..请任何人给我解决方案,即使它很简单..这里有什么问题??

提前谢谢..
玛尼

【问题讨论】:

    标签: django logging


    【解决方案1】:

    为您的日志记录设置试试这个,看看是否有帮助。

    注意 disable_existing_loggers 为 True,我向记录器添加了默认 ''。

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': True,
        'formatters': {
            'standard': {
                'format': '%(asctime)s %(levelname)s %(name)s %(message)s'
            },
        },
        'handlers': {
            'default': {
                'level':'DEBUG',
                'class':'logging.handlers.RotatingFileHandler',
                'filename': '/home/linuxuser/mani/f/logs/msg.log',
                'maxBytes': 1024*1024*5, # 5 MB
                'backupCount': 5,
                'formatter':'standard',
            },  
            'request_handler': {
                    'level':'DEBUG',
                    'class':'logging.handlers.RotatingFileHandler',
                    'filename': 'logs/django_request.log',
                    'maxBytes': 1024*1024*5, # 5 MB
                    'backupCount': 5,
                    'formatter':'standard',
            },
        },
        'loggers': {
    
            '': {
                'handlers': ['default'],
                'level': 'DEBUG',
                'propagate': True
            },
            'django.request': { # Stop SQL debug from logging to main logger
                'handlers': ['request_handler'],
                'level': 'DEBUG',
                'propagate': False
            },
        }
    }
    

    【讨论】:

    • @ Ken : 非常感谢 Mr.ken.. 它现在可以工作了.. 非常感谢您的友好回复.. 但还有一个疑问.. 它保存了我的日志消息(我在编码)以及该文件名中的一些默认消息..例如:DEBUG django.db.backends 一些 sql 查询..为什么它会自动将一些消息(如 DEBUG django.db.backends)保存到该文件中???是Django日志的内置功能???
    • 它内置在 django 中,您可以通过为 django.db 添加另一个记录器并将其设置为 info 或仅将一个用于 django 的记录器设置为 info 来更改这些设置,它不会记录这些设置。
    • 谢谢!看起来像添加 '' 到记录器数组解决了我的问题。节省了我很多时间。
    【解决方案2】:

    几个问题。

    • 您是否在 /home/linuxuser/mani/f/logs/msg.log 中看到任何内容?
    • 或者只是不是您想要的日志消息?如果您没有看到任何内容
    • 您是否有权写入该文件?

    在你的情况 2 中,你不应该在 settings.py 文件中需要这个。

    import logging    
    import logging.handlers    
    from django.conf import settings    
    logging.basicConfig()
    

    您应该只需要 LOGGING 元组。有关配置的更多信息,请参阅 django 文档。

    https://docs.djangoproject.com/en/1.3/topics/logging/

    【讨论】:

    • @Ken :我只是想查看该文件中的日志消息。我在 /home/linuxuser/mani/f/logs/msg.log 中没有看到我的案例 2 中的任何内容,但我可以看到为我的案例 1 记录消息。是的,我有权写入该文件..它对案例 1 工作得很好。我只有在通过您上面给出的链接后才尝试此代码...我会再次浏览文档..感谢您的回复。
    • @mani 签出此链接,它也可能有所帮助。 stackoverflow.com/questions/5438642/…
    • @Mani 很奇怪,你还看不到日志吗?您可以使用新的 settings.py 日志记录设置更新问题吗?您使用的是 django 1.3 对吗?
    • @Ken:是的,我正在使用 django 1.3 !!!请在上面找到已编辑的问题。我仍在尝试将日志消息保存到该文件中..
    猜你喜欢
    • 2020-05-14
    • 2012-08-15
    • 2015-09-19
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    相关资源
    最近更新 更多