Django自帶日誌 settings.py文件配置

Django    settings.py文件配置部分:

# logging配置
log_file = '/home/nagain/learn/log'
log_file_path = os.path.join(log_file, 'all.log')
if not os.path.exists(log_file):
    os.mkdir(log_file)
    os.mknod(log_file_path)  # 創建空文件

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'
        }
    },
    'filter': {

    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
        },
        'default': {
                    'level': 'DEBUG',
                    'class': 'logging.handlers.RotatingFileHandler',
                    'filename': log_file_path,         # 日誌輸出文件
                    'maxBytes': 1024*1024*5,                  # 文件大小
                    'backupCount': 5,                         # 備份份數
                    'formatter': 'standard',                  #使用哪種formatters日誌格式
        },
        'error': {
                    'level': 'ERROR',
                    'class': 'logging.handlers.RotatingFileHandler',
                    'filename': log_file_path,
                    'maxBytes': 1024*1024*5,
                    'backupCount': 5,
                    'formatter': 'standard',
                },
        'console': {
                    'level': 'DEBUG',
                    'class': 'logging.StreamHandler',
                    'formatter': 'standard'
                },
        'request_handler': {
                    'level': 'DEBUG',
                    'class': 'logging.handlers.RotatingFileHandler',
                    'filename': log_file_path,
                    'maxBytes': 1024*1024*5,
                    'backupCount': 5,
                    'formatter': 'standard',
                },
        'scprits_handler': {
                    'level': 'DEBUG',
                    'class': 'logging.handlers.RotatingFileHandler',
                    'filename': log_file_path,
                    'maxBytes': 1024*1024*5,
                    'backupCount': 5,
                    'formatter': 'standard',
                }
    },
    'loggers': {
        'django': {
                    'handlers': ['default', 'console'],  # 來自上面定義的handlers內容
                        'level': 'INFO',
                    'propagate': False  # 是否繼承父類的log信息
        },
        'scripts': {
            'handlers': ['scprits_handler'],
            'level': 'INFO',
            'propagate': False
        },
        # sourceDns.webdns.views 應用的py文件
        'sourceDns.webdns.views': {
                    'handlers': ['default', 'error'],
                    'level': 'INFO',
                    'propagate': True
        },
        'sourceDns.webdns.util': {
                    'handlers': ['error'],
                    'level': 'ERROR',
                    'propagate': True
        },
        # 'django.request': {
        #             'handlers': ['mail_admins'],
        #             'level': 'ERROR',
        #             'propagate': False,
        #         },
    }
}

項目視圖函數views.py使用實例:

# 日誌
import logging
logger = logging.getLogger('sourceDns.webdns.views')  # 獲取settings.py配置文件中logger名稱
def index(request):
    a = reverse('index:article')
    logger.info(a)
    return HttpResponseRedirect(a)

注意:錯誤日誌記錄級別level

級別描述
CRITICAL50關鍵錯誤/消息
ERROR40錯誤
WARNING30警告消息
INFO20通知消息
DEBUG10調試
NOTSET0無級別

注意:記錄器 handler

關鍵字參數描述
filename將日誌消息附加到指定文件名的文件
filemode指定用於打開文件模式
format用於生成日誌消息的格式字符串
datefmt用於輸出日期和時間的格式字符串
level設置記錄器的級別
stream提供打開的文件,用於把日誌消息發送到文件。

注意: format日誌消息顯示格式

格式描述
%(name)s記錄器的名稱
%(levelno)s數字形式的日誌記錄級別
%(levelname)s日誌記錄級別的文本名稱
%(filename)s執行日誌記錄調用的源文件的文件名稱
%(pathname)s執行日誌記錄調用的源文件的路徑名稱
%(funcName)s執行日誌記錄調用的函數名稱
%(module)s執行日誌記錄調用的模塊名稱
%(lineno)s

執行日誌記錄調用的行號

%(created)s執行日誌記錄的時間
%(asctime)s日期和時間
%(msecs)s毫秒部分
%(thread)d線程ID
%(threadName)s線程名稱
%(process)d進程ID
%(message)s記錄的消息

注意: 內置處理器

logging模塊提供了一些處理器,可以通過各種方式處理日誌消息。使用addHandler()方法將這些處理器添加給Logger對象。另外還可以爲每個處理器配置它自己的篩選和級別。

handlers.DatagramHandler(host,port):發送日誌消息給位於制定host和port上的UDP服務器。

handlers.FileHandler(filename):將日誌消息寫入文件filename。

handlers.HTTPHandler(host, url):使用HTTP的GET或POST方法將日誌消息上傳到一臺HTTP 服務器。

handlers.RotatingFileHandler(filename):將日誌消息寫入文件filename。如果文件的大小超出maxBytes制定的值,那麼它將被備份爲filename1。

*****以上內容也是自己查詢通過自己測試是可行的,如果想要了解更加詳細,請自行查看神器(django官方文檔)*****


注意:以上內容是個人使用的隨手記錄, 就是介紹了下簡單的使用

歡迎大家來吐槽,準備好瓜子飲料礦泉水,開整!!!

---------------------------------------------------------------------------------------

搞笑:能動手就儘量別吵吵


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章