django 1.8 日志配置

以下为setings配置logging代码片段

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

LOGDIR = os.path.join(BASE_DIR, "logs")
LOGFILE = datetime.datetime.now().strftime("%Y-%m-%d") + ".log"
if not os.path.exists(LOGDIR):
    os.makedirs(LOGDIR)  # 创建路径
if os.path.isfile(os.path.join(LOGDIR, LOGFILE)):  # 重启的时候删除原始文件
    os.remove(os.path.join(LOGDIR, LOGFILE))

LOGGING = {
    ‘version‘: 1,
    ‘disable_existing_loggers‘: True,
    ‘formatters‘: {
        ‘standard‘: {
            ‘format‘: ‘%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(levelname)s]- %(message)s‘
        },
    },
    ‘filters‘: {
    },
    ‘handlers‘: {
        ‘mail_admins‘: {
            ‘level‘: ‘ERROR‘,
            ‘class‘: ‘django.utils.log.AdminEmailHandler‘,
            ‘include_html‘: True,
        },
        ‘default‘: {
            ‘level‘:‘DEBUG‘,
            ‘class‘:‘logging.handlers.RotatingFileHandler‘,
            ‘filename‘: os.path.join(LOGDIR, LOGFILE),  # 或者直接写路径:‘c:\logs\all.log‘,
            ‘mode‘: ‘w+‘,
            ‘maxBytes‘: 1024*1024*5,  # 5 MB
            ‘backupCount‘: 5,
            ‘formatter‘:‘standard‘,
        },
        ‘console‘:{
            ‘level‘: ‘DEBUG‘,
            ‘class‘: ‘logging.StreamHandler‘,
            ‘formatter‘: ‘standard‘
        },
        ‘request_handler‘: {
            ‘level‘:‘DEBUG‘,
            ‘class‘:‘logging.handlers.RotatingFileHandler‘,
            ‘filename‘: os.path.join(LOGDIR, ‘request_handler.log‘), #或者直接写路径:‘filename‘:‘c:\logs\request.log‘‘
            ‘maxBytes‘: 1024*1024*5,  # 5 MB
            ‘backupCount‘: 5,
            ‘formatter‘:‘standard‘,
        },
        ‘scripts_handler‘: {
            ‘level‘:‘DEBUG‘,
            ‘class‘:‘logging.handlers.RotatingFileHandler‘,
            ‘filename‘: os.path.join(LOGDIR, ‘script.log‘),  # 或者直接写路径:‘filename‘:‘c:\logs\script.log‘
            ‘maxBytes‘: 1024*1024*5,  # 5 MB
            ‘backupCount‘: 5,
            ‘formatter‘:‘standard‘,
        },
    },
    ‘loggers‘: {
        ‘django‘: {
            ‘handlers‘: [‘default‘, ‘console‘],
            ‘level‘: ‘DEBUG‘,
            ‘propagate‘: False
        },
        ‘django.request‘: {
            ‘handlers‘: [‘request_handler‘],
            ‘level‘: ‘DEBUG‘,
            ‘propagate‘: False
        },
        ‘scripts‘: {   # 脚本专用日志
            ‘handlers‘: [‘scripts_handler‘],
            ‘level‘: ‘INFO‘,
            ‘propagate‘: False
        },
        ‘app_name‘: {
            ‘handlers‘: [‘default‘],
            ‘level‘: ‘INFO‘,
        }
    }
}

下面专门讲解一下: 其实这个配置与python 传统的logging 很类似.
formatters 用来配置 日志打印的格式
handlers ,用来定义具体处理日志的方式,可以定义很多种,"default" 就是默认方式,"console" 就是打印到控制台方式.
loggers 是用来配置用哪几种 handlers 来处理日志,比如你同时需要输出日志到文件,和到控制台,那就必须配置 两种handlers. 在上面的例子中 ‘app_name" 是典型的例子.
有一点必须注意的是 loggers 类型 为"django" 这将处理所有类型的日志.
另外 为什么我配置了一个 ‘app_name‘ 的logger,这是因为 django 会根据包的层次结构去找 应该用那个 logger 来处理日志,如果找不到,就不输出日志,而我的项目要输出日志的views.py 都是是放在 app_name 下面的。而且当系统查找是否配置有相应的logger的时候,如果本身这个module 没有logger ,就查找父类是否有logger。比如有一个module:app_name.views. 如果在这里面用如下方式写日志:
# vi views.py
import logging
logger = logging.getLogger(‘app_name‘)
logger.info(‘my app‘)
logger.error(‘error‘)
这个时候也会找到 app_name 去处理,虽然没有定义 "app_name.views" 这样的logger,它会再他的父类找。

知道了原理,在view中就如同上面介绍的那样,应用就好了
# vi views.py
import logging
logger = logging.getLogger(__name__) # 这里用__name__通用,自动检测.
logger.info(‘my app‘)
logger.error(‘error‘)

你如果既想看 自己在程序中输出的日志,又想看django自己输出的日志,特别是sql 语句,那么根据上面介绍的,你可以这样做:
#vi views.py
import logging
logger = logging.getLogger(‘django‘) # 这里用__name__通用,自动检测.
logger.info(‘my app‘)
logger.error(‘error‘)
这样,所有的日志你都能看到,包括 django.db.backends 数据库sql语句的日志

官网日志配置讲解:

https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-LOGGING

https://docs.djangoproject.com/en/1.8/topics/logging/#configuring-logging

.

时间: 2024-12-18 04:18:21

django 1.8 日志配置的相关文章

Django中的URL配置和模板

Django中的URL配置 : 实例: Python代码   urlpatterns = patterns('', # Example: # (r'^myweb/', include('myweb.foo.urls')), # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc

MyBatis应用开发(6)日志之日志配置

1. 日志 1.1. 日志配置 MyBatis的总体配置文件中可以通过setting配置所采用的日志输出途径,也可以配置为不输出日志. logImpl:配置MyBatis使用的日志实现方式.可以选的方式:SLF4J.LOG4J.LOG4J2.JDK_LOGGING.COMMONS_LOGGING.STDOUT_LOGGING.NO_LOGGING.也可以是实现了org.apache.ibatis.logging.Log接口的类的全限定名. <configuration> <!-- 配置参

CentOS 6.6 sudo日志配置

CentOS 6.6 sudo日志配置 查询syslog和sudo软件是否已安装 [[email protected] ~]# rpm-qa|egrep "sudo|syslog" rsyslog-5.8.10-8.el6.x86_64 sudo-1.8.6p3-15.el6.x86_64 配置/etc/sudoers文件 [[email protected] ~]# echo"Defaults    logfile=/var/log/sudo.log">&g

Tomcat日志配置

1.Log4j日志配置 ①log4j代替tomcat自身的log 如果想用log4j来详细的打印出 tomcat的log,用下面的方法可以做到首先,将common-logging和log4j的包放入tomat/common/lib下然后将log4j.properties文件放入tomcat/common/classes下 ②根据日志不同级别,进行配置输出 配置文件: ### set log levels ###log4j.rootLogger = debug ,  stdout ,  D , 

[译]Stairway to Integration Services Level 12 - 高级日志配置

介绍 本文中,我们将结合之前学习的时间冒泡,日志记录,以及复制模型.建立一个自定义的SSIS包日志模型. SSIS Task事件回顾    Reviewing SSIS Task Events 在做实验之前我们更改一下 Precedence.dtsx SSIS 包的设置. 把 Precedence.dtsx SSIS 包的 DisableEventHandlers 属性改为True Figure 2 屏蔽内置日志   Disable Built-In Logging 首先我们要移除已经存在的日志

django 的mysql数据配置

原地址:http://blog.csdn.net/gamesofsailing/article/details/21465327 在成功安装python-mysql后,开始配置django的mysql连接配置 打开django项目下的setting.py文件,将DATABASES改成下面这样 DATABASES = { 'default': { 'ENGINE':'django.db.backends.mysql', 'NAME':'mysite', 'USER':'root', 'PASSWO

Django Nginx+uwsgi 安装配置

Django Nginx+uwsgi 安装配置 在前面的章节中我们使用 python manage.py runserver 来运行服务器.这只适用测试环境中使用. 正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, Nginx, lighttpd等,本文将以 Nginx 为例. 安装基础开发包 Centos 下安装步骤如下: yum groupinstall "Development tools" yum install zlib-devel bzip2-deve

tomcat生成调试日志配置

创建文件logging.properties 文件存放于应用WEB-INF/classes下 文件内容如下: 1 handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 2   3 ############################################################ 4 # Handler specific properties. 5 # Describes specif

tomcat 6.x + log4j日志配置并按天(或大小)生成文件

tomcat日志,默认路径在${catalina.home}/logs目录下,默认使用的是tomcat自己封装的logging工具类,默认配置文件使用的${catalina.home}/conf/logging.properties 默认的配置不满足按天或按大小将日志区分,用以备份或转移或删除,经常会出现日志文件超大,磁盘空间不够的情况(就算磁盘够,一段时间后的日志也应该及时清理和压缩起来). 考虑到这种需求,使用log4j的配置,将tomcat的logging拦截起来,配置如下: 采用log4