1. 程式人生 > >django中使用日誌輸出

django中使用日誌輸出

django中日誌和國際化都是採用彼python的標準庫來實現的,其中國際化是使用的GNU的gettext模組,日誌採用的是logging模組。logging模組在日誌方面是非常的強悍啊。

django的標準配置中有一個LOGGING的引數,但是並沒有任何實現,在django.utils.log.py中給出了預設的實現方案,如下:

log.py

from __future__ import unicode_literals

import logging
import sys
import warnings
# Imports kept for backwards-compatibility in Django 1.7.
from logging import NullHandler  # NOQA
from logging.config import dictConfig  # NOQA

from django.conf import settings
from django.core import mail
from django.core.mail import get_connection
from django.utils.deprecation import RemovedInNextVersionWarning
from django.utils.encoding import force_text
from django.utils.module_loading import import_string
from django.views.debug import ExceptionReporter, get_exception_reporter_filter

getLogger = logging.getLogger

# Default logging for Django. This sends an email to the site admins on every
# HTTP 500 error. Depending on DEBUG, all other log records are either sent to
# the console (DEBUG=True) or discarded by mean of the NullHandler (DEBUG=False).
DEFAULT_LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
        },
        'null': {
            'class': 'logging.NullHandler',
        },
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
        },
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
        'django.security': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
        'py.warnings': {
            'handlers': ['console'],
        },
    }
}


因為django的除錯伺服器預設開啟了自動載入,所有直接使用print是無法列印輸出的,(伺服器的啟動是建立的子程序),否則只能每次修改後重啟伺服器,如果不想每次重啟伺服器的話,就需要自己來配置LOGGING選項。

如下是我根據django中預設的配置修改後來進行使用的方案,我從log.py中匯入了DEFALUT_LOGGING如下:

LOGGING = DEFAULT_LOGGING
LOGGING['formatters']={
        'standard': {
                'format': '%(levelname)s %(asctime)s %(message)s'
                },
		}
LOGGING['handlers']['console']['formatter']='standard'
在使用的時候,直接使用預設日誌器django,如下示例程式碼:
#coding=utf-8
<pre name="code" class="python">from django.shortcuts import render
from django.http import HttpResponse
import logging
from django.utils.log import getLogger

# Create your views here.
"""
不要相信任何使用者提交資料,對於使用者提交資料請一定做轉義處理,
否則直接字串序列化可能會導致被執行
(1)在html中以javascript被執行
(2)在資料庫中以資料庫語句被執行
"""

logger = logging.getLogger("django")
#logger = getLogger()

def show_your_name(request):
	name = request.GET["name"] if "name" in request.GET else "defalut-django"
	logger.warn("name=%s" % (name,))
	return render(request, "safty/show_name.html", locals())




相關推薦

tomcat日誌輸出的位置

遇到的問題是這樣的,使用tomcat的startup.sh啟動之後,在logs下的catalina.out檔案中總是沒有輸出日誌,所以就開始了這次查詢的旅程, 首先肯定要找startup.sh的指令碼了,如圖: 我沒學過shell,所以那麼多爛七八糟的也不太懂啦,但是我能

django日誌的設定和編寫

# 自定義日誌輸出資訊LOGGING = {    'version': 1,    'disable_existing_loggers': True,    'formatters': {        'standard': {            'format':

Django 使用 logging 配置 logger 自定義日誌輸出

講解 handler ati dmi ase set file 過程 require 在使用 django 開發過程中,默認的日誌輸出是不能滿足我們去排查問題的,往往需要自定義的日誌輸出,幫助我們去排查程序BUG,定位問題原因。 在使用 django 的開發過程中,我使用的

django使用日誌輸出

django中日誌和國際化都是採用彼python的標準庫來實現的,其中國際化是使用的GNU的gettext模組,日誌採用的是logging模組。logging模組在日誌方面是非常的強悍啊。 django的標準配置中有一個LOGGING的引數,但是並沒有任何實現,在djang

DjangoDjango開發日誌輸出

開發環境:Ubuntu16.04+Django 1.11.9+Python2.7 一:使用自定義函式輸出日誌到log檔案: import time def print_log(log): file_obj = open('/tmp/f

JAVA使用log4j及slf4j進行日誌輸出的方法

cto 所在 inf 官方 pat etl 註意 actor 結果   JAVA中輸出日誌比較常用的是log4j,這裏講下log4j的配置和使用方法,以及slf4j的使用。 一、下載log4j的架包,並導入項目中,如下: 二、創建log4j.prope

C#使用log4net框架做日誌輸出

repos com cep man utf info epo fin code 一、用法 1、引入包:https://www.nuget.org/packages/log4net/ 2、Main函數 using System; using System.IO;

djangorender 原文輸出

  我最開始的是: .html <form action="DownLoad/" method="POST" style="position:absolute; top:10px; left:10px"> {% csrf_token %} 檔案列表<

scrapy螢幕log日誌輸出儲存到txt文字

在使用scrapy框架的時候,因為scrapy在螢幕上面輸出的日誌一直在跑,有些錯誤又抓不到,無奈只能先把log日誌放在檔案中,慢慢進行錯誤日誌的分析。 如圖所示: 我們需要設定的地方只在settings.py資料夾中進行設定就可以了。 LOG_LEVEL = 'DE

Spring Boot實現logback多環境日誌配置(日誌輸出)

  Spring Boot中實現logback多環境日誌配置 - EasonJim - 部落格園 https://www.cnblogs.com/EasonJim/p/7801549.html   Spring Boot中實現logback多環境日誌配置 方法

log4j2配置檔案,關於日誌輸出設定

<?xml version="1.0" encoding="UTF-8"?> <!--     status : 這個用於設定log4j2自身內部的資訊輸出,可以不設定,當設定成trace時,會看到log4j2內部各種詳細輸出     monitorInte

專案日誌級別設定為INFO,控制檯一致輸出DEBUG

昨天專案中需要引入一個其他系統的功能,在直接把對方pom引入後,重新啟動專案後,控制檯輸出大量Zookeeper和Spring的DEBUG日誌;首先,將log4j從引入的專案中排除掉,重啟專案,依然刷了很多的DEBUG日誌;再去檢查,發現引入的這個包裡面包含自己的log4j.

django使用日誌

配置日誌檔案的使用 # 配置日誌檔案的使用 # LOGGING = { # 'version': 1, # 'disable_existing_loggers': True, # 'formatters': { # 格式化輸出

slf4j配合log4j在系統增加新的日誌輸出檔案

對於每個程式設計師來說日誌資訊都是至關重要的,日誌資訊越完整越有助於我們排查問題。但是日誌過多時在檢視指定資訊時會有些不方便。此時我們可以把比較重要的日誌或特定業務的日誌輸入到指定的檔案中,便於我們查詢。在不修改原程式日誌的基礎上增加新的日誌輸出。在原環境可用的情況下直接新增

jni日誌輸出到LOGCAT

在Java環境下使用JNI時可以方便的使用printf函式列印資訊,在Eclipse控制檯Console檢視可以方便的觀察到,可在Android環境下使用JNI的話,printf函式就無效了,LogCat檢視和Console視圖裡看不到任何輸出.但在android程式設計j

如何在 Spring Security 2 開啟日誌輸出

用了一陣子SS2,執行過程中一直沒有日誌輸出,從網上也找不到相應的內容, 回過頭來仔細研究提供的例子,發現他就能輸出日誌,仔細研究後發現,主要區別就在 缺少commons-logging-1.1.1.jar包 可能spring security 2並不使用log4j進行log

SMALI注入新增除錯日誌輸出

針對Android中Smali程式碼逆向分析,由於現在除錯技術有限,一種相對簡單的辦法是在Smali中加入Log輸出: const-string v3, "a"   invoke-static {v3, v2}, Landroid/util/Log;->v(Lj

iOS 將Log日誌輸出到檔案儲存

對於那些做後端開發的工程師來說,看LOG解Bug應該是理所當然的事,但我接觸到的移動應用開發的工程師裡面,很多人並沒有這個意識,查Bug時總是一遍一遍的試圖重現,試圖除錯,特別是對一些不太容易重現的Bug經常焦頭爛額。而且iOS的異常機制比較複雜,Objecti

Django 使用 logging 模組記錄系統日誌

Handlers The handler is the engine that determines what happens to each message in a logger. It describes a particular logging behavior, such as writing

用log4j如何使不同的類的日誌輸出到不同的日誌檔案.

1.先看log4j的配置檔案: log4j.rootLogger=INFO,R,Client log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=./log/server.lo