python-整理-logging日志


python的日志功能模塊是logging 功能和使用方式非常類似於log4

如何使用logging:

# 導入日志模塊
import logging
# 使用配置文件設置日志時,需要導入這個模塊 import logging.config
class MyLog: '''日志類,用於將日志信息寫入到.txt文件中''' # 載入配置信息,從Logging.cfg __loadcfg=logging.config.fileConfig("Loggers/Logging.ini") # 獲取一個logger對象,通過這個名字參數可以保證在當前程序進程中其它地方獲取日志對象時,是同一個日志對象. __dblog=logging.getLogger('dblog') @staticmethod def AddLog(msg,logrefname=None): '''// 添加日志 // 1.msg:日志內容 // 2.logrefname:通過這個名字獲取日志對象,默認是dblog.其它名字要到配置文件里查看 ''' if logrefname is not None: MyLog.__dblog=logging.getLogger(logrefname) MyLog.__dblog.debug(msg)

使用時調用 MyLog.AddLog(logmsg)就加入日志了.

以下是配置文件Logging.ini

# 這是python的logging日志模塊的配置文件
# 遇到的問題有幾個:使用logging.config.fileConfig("Logging.ini")載入后,啟動程序
# 1.報錯.KeyError Formatters 在網上查了很久,說是日志路徑的問題,結果就是路徑問題
# 2.報錯gbk... 用的是VS2013,新建的python文件不是utf-8編碼,需要改一下編碼.可是對於這個Logging.ini,居然要改回gb2312(936).不改的話就報這錯誤.

# 指示日志引用名,通過這個名字,能找到同一個日志對象
[loggers]
keys=root,dblog

# 指示日志的輸出,可以輸出到控制台,文件,發Email,輸出到SOCKET等等
[handlers]
keys=handroot,handdb

# 指示日志輸出格式
[formatters]
keys=formroot,formdb

# root日志對象,這個相當於父類,必需要有
[logger_root]
level=NOTSET
handlers=handroot

# 這是自己建立的日志對象,propagate=0表示不繼承父類,=1表示繼承.(研究后得出結論:如果選繼承,日志也會輸出到父類的handler上)
[logger_dblog]
level=DEBUG
handlers=handdb
propagate=0
qualname=dblog

[handler_handroot]
class=StreamHandler
level=NOTSET
formatter=formroot
args=(sys.stdout,)

# 這使用了回轉日志(class指示使用的是哪個hander,logging有很多handler),就是當日志達到一定大小后,會另建一個新文件
[handler_handdb]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=formdb
args=('dblog.txt', 'a',2048)

[formatter_formroot]
format=F1 %(asctime)s %(levelname)s %(message)s
datefmt=
class=logging.Formatter

# 關於formatter類的詳細情況,請查看本機文檔在d:/python學習中有鏈接
[formatter_formdb]
format=%(asctime)s 類型 : %(name)s 內容 : %(message)s
datefmt=%Y-%m-%d %H:%M:%S
class=logging.Formatter

也可以在代碼中配置日志,使用這個方法載入配置

logging.basicConfig()

一個非常詳細的日志使用請看這里

http://www.cnblogs.com/dkblog/archive/2011/08/26/2155018.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM