logging 模塊

一、logging模塊級別及常用函數

  默認的level是logging.Warning,低于該級別的就不輸出了。級別排序:Critical> Error > Warning > Info > Debug

  Logging.Formatter:配置日志的格式,在里面自定義設置日期和時間,輸出日志的時候將會按照設置的格式顯示內容。

  Logging.Logger:為程序提供記錄日志的接口;判斷日志所處級別,并判斷是否要過濾;根據其日志級別將該條日志分發給不同handler
  addHandler():添加一個Handler

  removeHandler():刪除一個Handler
  addFilter():添加一個Filter,過濾作用

  setLevel():設置級別

  setFormatter():設置Formatter
  Logging.Handler:Handler基于日志級別對日志進行分發,如設置為WARNING級別的Handler只會處理WARNING及以上級別的日志。

  logging.basicConfig: 配置日志級別和日志內容輸出格式

  help(logging.Formatter):

    %(name)s????????????????? ?Logger的名字
    %(levelno)s??????????????? 打印日志級別的數值
    %(levelname)s?????????? 打印日志級別的名稱
    %(pathname)s??????????? 打印當前執行程序路徑,相當于sys.argv[0]
    %(filename)s????????????? 打印當前執行程序名
    %(module)s??????????????? 調用日志輸出函數的模塊名
    %(lineno)d????????????????? 打印日志的當前行號
    %(funcName)s???????????打印日志的當前函數
    ?%(created)f??????????????? 當前時間,用UNIX標準的表示時間的浮點數表示
    %(asctime)s??????????????? 打印日志創建時間
    ?%(msecs)d????????????????? Millisecond portion of the creation time
    %(relativeCreated)d??? 輸出日志信息時的,自Logger創建以來的毫秒數
    %(thread)d????????????????? 打印線程ID
    ?%(threadName)s????????打印線程名稱
    %(process)d????????????????打印日志進程ID
    ?%(message)s????????????? 打印日志信息

二、日志輸出

 1 import logging
 2 import os.path
 3 import time
 4 
 5 
 6 logger = logging.getLogger()   # 創建一個logger
 7 logger.setLevel(logging.INFO)  # Log等級總開關
 8 
 9 # 創建一個handler,用于輸出日志到console,若只需輸出到文件,此兩行代碼去掉
10 ch = logging.StreamHandler()
11 ch.setLevel(logging.WARNING)  # 輸出到console的log等級的開關
12 
13 # 創建一個handler,用于寫入日志文件,若只需輸出到console,此六行代碼去掉
14 rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
15 log_path = os.path.dirname(__file__) + '/Logs/'
16 log_name = log_path + rq + '.log'
17 logfile = log_name
18 fh = logging.FileHandler(logfile, mode='w')
19 fh.setLevel(logging.DEBUG)  # 輸出到file的log等級的開關
20 
21 # 定義handler的輸出格式
22 ch.setFormatter(logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"))   # 若只需輸出到文件,此行代碼去掉
23 fh.setFormatter(logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")) # 若只需輸出到console,此行代碼去掉
24 25 # 將logger添加到handler里面 26 logger.addHandler(ch) ?# 若只需輸出到文件,此行代碼去掉 27 logger.addHandler(fh) # 若只需輸出到console,此行代碼去掉 28 29 # 日志內容 30 logger.debug('Debug message') 31 logger.info('Info message') 32 logger.warning('Warning message') 33 logger.error('Error message') 34 logger.critical('Critical message')

?

轉載于:https://www.cnblogs.com/skyliao/p/9512145.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249615.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249615.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249615.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大數據項目中的QA需要迎接新的挑戰

大數據項目中的QA需要迎接新的挑戰根據IDC全球半年度大數據和分析支出指南的最新預測,到2022年全球大數據和業務分析解決方案的收入將達到2600億美元。在大數據和業務分析解決方案上投資增長最快的行業包括銀行(復合年增長率13.3%)、醫療、保…

spring源碼分析之spring-core總結篇

1.spring-core概覽 spring-core是spring框架的基石,它為spring框架提供了基礎的支持。 spring-core從源碼上看,分為6個package,分別是asm,cglib,core,lang,objenesis和util。 1.1 asm 關于as…

五分鐘搞懂后綴數組!

為什么學后綴數組 后綴數組是一個比較強大的處理字符串的算法,是有關字符串的基礎算法,所以必須掌握。 學會后綴自動機(SAM)就不用學后綴數組(SA)了?不,雖然SAM看起來更為強大和全面,但是有些SAM解決不了的問題能被SA解…

spring-core

spring最核心的組件是BeanFactory,看了源碼才發現,BeanFactory并非定義在spring-core中,那spring-core都有啥東東? spring-core主要提供以下服務,為BeanFactory的定義提供基礎服務。 1, ConversionService Conversi…

nginx配置靜態文件過期時間

1. 編輯虛擬主機配置文件/usr/local/nginx/conf/vhosts/huangzhenping.conf 說明:采用location方式 12345678910location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${access_log off;expires 1d;}location ~ \.(js|css){access_log off;expires 1d;}2. 檢查配置文件&#x…

vue 移動端在div上綁定click事件 失效

在.vue的文件中使用了better-scroll,在div標簽上綁定click事件后,無效。 原因:使用了better-scroll,默認它會阻止touch事件。所以在配置中需要加上click: true 即可解決 mounted(){this.$nextTick(() > {let bscrollDom this.…

Java中的鉤子方法

鉤子方法是啥 鉤子顧名思義就是用來掛東西的。那么要掛東西必須有個被掛的東西,要不就是鐵環、要不就是墻的邊沿。所以要能掛住東西必須要有個被勾住的鐵環,要一個鉤子。那么在java中也是同樣的原理,你首先需要一個被掛在的東西,一…

啟動tomcat出現too many connections的原因及解決方法

感謝分享,原文地址:http://blog.sina.com.cn/s/blog_e7e07ec30102vsba.html一、原因 產生too many connections 的直接原因是因為數據庫提供的連接被全部占滿了。數據庫可以提供多少連接,可以再my.cnf(linux)或者my.ini(windows)下設定。這個…

Spring Beans 初始化流程分析

測試用例 依然使用這個官網上的用例,來進行調試; Person.java package org.shangyang.spring.container;/**- - author shangyang**/public class Person {String name;Person spouse;public String getName() {return name;}public void setName(Stri…

劍指offer(65)矩陣中的路徑

題目描述 請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑。路徑可以從矩陣中的任意一個格子開始,每一步可以在矩陣中向左,向右,向上,向下移動一個格子。如果一條路徑經過了矩陣中的某一個…

VSCode中怎么改變文件夾的圖標

昨天更新了VSCode后我的文件夾圖標莫名其妙的沒有了,變成了下圖這樣 看著真的讓我難受的頭皮發麻,本來打代碼就頭發少,難道非要讓我變成禿頭,不可能不可能,所以我找了找怎么解決 來,各位看官上眼 如圖所示 …

jdk1.8以前不建議使用其自帶的Base64來加解密

JDK1.8之前的base64是內部測試使用的代碼,不建議生產環境使用,而且未來可能會移除, JDK1.8提供最新可以正式使用的Base64類, 不要使用JDK中自帶的sun.misc.BASE64Decoder這個類去BASE64, 這個會在后面多加換行。使用ap…

Redis的五大數據類型

1.String(字符串) String是Redis最基本的類型,一個Key對應一個Value。 String類型是二進制安全的,意思是Redis的String可以包含任何數據,比如jpg圖片或者序列化的對象。 String類型是Redis最基本的數據類型&#xff0c…

springxml解析

1.XML驗證模式的認識 首先XML的驗證模式有兩種:DTD和XSD。 DTD文檔類型定義,是XML約束模式語言。它是為了保證XML文檔格式正確有效的方法。通過XML文檔和DTD文檔的比較來判斷XML是否符合規范。(現在我很少見,不知道是不是淘汰了) 舉個例子&…

jq函數綁定與解綁

最近學到幾個新的jq函數 1、bind()綁定函數 2、unbind()解綁函數 3、add() .給元素追加字符串 4、addClass() 給某元素增加class屬性值轉載于:https://www.cnblogs.com/bigwang1126/p/9566556.html

微信小程序時間標簽與范圍聯動設計實現

微信小程序時間標簽與范圍聯動設計實現?最近忙于一個有關數據管理的微信小程序開發,遇到了上圖情況,雖然很簡單,還是整理一下。若有錯誤,請廣大朋友們指正。 使用微信小程序組件radio-group、picker,用wxss…

github中的watch、star、fork的作用

在每個 github 項目的右上角,都有三個按鈕,分別是 watch、star、fork,但是有些剛開始使用 github 的同學,可能對這三個按鈕的使用卻不怎么了解,包括一開始使用 github 的我也是如此,這篇博客,結合自己的理解…

docker 操作 記錄

docker ps #查看當前docker容器 docker exec -it 容器名稱 sh 進入docker容器 docker stop 停止docker容器轉載于:https://www.cnblogs.com/objects/p/9569299.html

關于群論證明費馬小定理?

這篇博客就是講證費馬的,沒什么意思。 既然是要用群論證明費馬小定理,那么我們先用數論證明一下。 (以下的 p 為一個質數) 首先我們考慮 一個前置定理: 第一個證明 若 $(c,p) 1$ (即 c 與 p 的 gcd 為 1),且 $ac ≡ bc (mod\ p)$ …

spring 源碼-context

1 spring-context 模塊概要 該模塊主要實現在spring-beans 模塊的擴展,主要對aop支持及el表達式的實現 分析示例 public static void main(String[] args){ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext("spring-aop.xml"…