python日誌文件
現在有test.py程序要後台部署, 裡面有輸出內容
使用命令:
nohup python -u test.py > test.log 2>&1 &
最後的&表示後台運行
2 輸出錯誤信息到提示符窗口
1 表示輸出信息到提示符窗口, 1前面的&注意添加, 否則還會創建一個名為1的文件
最後會把日誌文件輸出到test.log文件
查看
tail -f test.log如果要實時查看日誌文件使用命令
cat test.log查看全部輸出使用命令
『貳』 python如何查看報錯日誌
test.py的39行,有個對象是個None?意思是你肯定有什麼對象沒有初始化就用了吧。
這個日誌提示的信息意思最後一行NoneType,你還是查查你的test.py調用的方法是不是不對
你可以在IDLE下單步執行看看,環境變數是不是有些沒有按照你想像的進行。
『叄』 python 讀取日誌文件
#-*-coding:utf-8-*-
withopen('log.txt','r')asf:
foriinf:
ifdt.strftime(dt.now(),'%Y-%m-%d')ini:
#判斷是否當天時間
if'ERROR'iniand'atcom.mytijian'ini:
#判斷此行中是否含有'ERROR'及'atcom.mytijian'
if((dt.now()-dt.strptime(i.split(',')[0],'%Y-%m-%d%H:%M:%S')).seconds)<45*60:
#判斷時間是為當前45分鍾內
printi
『肆』 Python 將運行結果保存到log文件中遇到的問題
這個簡單啊。通過管道輸出到另一個程序里去,另外一個程序同時列印並輸出到out.log
這是我常用的辦法。
還有一個笨辦法,用自己的myprint代替所有的print語句。這樣你可以同時輸出到屏幕與文件了。
第三個辦法是通過logging。這個模塊支持多個listener,可以同時輸出到屏幕與文件以及網路。
『伍』 python中怎麼讓日誌文件數據變成列表
去讀文件,一行一行加入[],就成列表了,然後可以針對列表進行處理。
具體是什麼還需要你描述出來~
『陸』 Python 讀取log文件並提取錯誤信息的功能,不知道如何實現
樓 下的回答提從zipfile里讀取文件,至於lovejie1214問的是如果用正則表達式提取。
統計數據及類型需要一個dict,
讀日誌通常可以用csv提高速度。因為不知道你的文件格式這里不好直接寫程序。
types={}
while not_end:
line=fp.readline()
m=re.search("(?isu)Short Msg:(.*)",line)
if m:
try:
types[m.group(1).strip()]+=1
except KeyError:
types[m.group(1).strip()]=1
for k in types:
print k,types[k]
『柒』 python中log info 是什麼文件
a. 利用sys.stdout將print行導向到你定義的日誌文件中,例如:
import sys# make a of original stdout routestdout_backup = sys.stdout# define the log file that receives your log infolog_file = open("message.log", "w")# redirect print output to log filesys.stdout = log_fileprint "Now all print info will be written to message.log"# any command line that you will execute...
log_file.close()# restore the output to initial patternsys.stdout = stdout_backupprint "Now this will be presented on screen"
b. 利用logging模塊(規范化日誌輸出,推薦!!)
由於logging模塊的功能比較多,下面就放一些文檔里介紹的簡單的例子,更詳細具體的用法請戳這里
需求
最好的實現方式
故障調查或者狀態監測 logging.info()或logging.debug()(後者常用於針對性檢測診斷的目的)
特定運行事件發出警告 logging.warning()
報告錯誤抑制不出發異常(常見於長時間運行的伺服器進程的錯誤處理程序) logging.error(), logging.exception()或者logging.critical()
而以下是根據事件的嚴重性程度而應採取的logging函數的建議:
程度
使用場景
DEBUG 獲得診斷問題是具體的信息
INFO 確認程序是否按正常工作
WARNING 在程序還正常運行時獲取發生的意外的信息,這可能會在之後引發異常(例如磁碟空間不足)
ERROR 獲取程序某些功能無法正常調用這類嚴重異常的信息
CRITICAL 獲取程序無法繼續運行的這類最嚴重異常信息
默認的等級是WARNING,也就是說logging函數在沒有特別配置的前提下只追蹤比WARNING程度更嚴重的異常。
下面就用一些例子來具體說明如何用logging函數記錄日誌信息:
# this is a simple exampleimport logging# define the log file, file mode and logging levellogging.basicConfig(filename='example.log', filemode="w", level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')
查看example.log文件可以看到以下信息:
DEBUG:root:This message should go to the log fileINFO:root:So should thisWARNING:root:And this, too
從多個文件記錄日誌
# myapp.pyimport loggingimport mylibdef main():
logging.basicConfig(filename='myapp.log', level=logging.INFO)
logging.info('Started')
mylib.do_something()
logging.info('Finished')if __name__ == '__main__':
main()
# mylib.pyimport loggingdef do_something():
logging.info('Doing something')
輸出的信息為
INFO:root:StartedINFO:root:Doing somethingINFO:root:Finished
改變默認輸出信息的格式
import logging# output format: output time - logging level - log messageslogging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s')
logging.warning('This message will appear in python console.')
在python console中直接列印以下輸出:
2016-8-2 2:59:11, 510 - WARNING - This message will appear in python console
logging高級用法
可以通過構建logger或者讀取logging config文件對logging函數進行任意配置。
構建logger法
- import logging# create loggerlogger = logging.getLogger('simple_example')
- logger.setLevel(logging.DEBUG)# create console handler and set level to debugch = logging.StreamHandler()
- ch.setLevel(logging.DEBUG)# create formatterformatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')# add formatter to chch.setFormatter(formatter)# add ch to loggerlogger.addHandler(ch)# 'application' codelogger.debug('debug message')
- logger.info('info message')
- logger.warn('warn message')
- logger.error('error message')
- logger.critical('critical message')
- $ python simple_logging_mole.py2005-03-19 15:10:26,618 - simple_example - DEBUG - debug message2005-03-19 15:10:26,620 - simple_example - INFO - info message2005-03-19 15:10:26,695 - simple_example - WARNING - warn message2005-03-19 15:10:26,697 - simple_example - ERROR - error message2005-03-19 15:10:26,773 - simple_example - CRITICAL - critical message
讀取配置文件法
- import loggingimport logging.config
- logging.config.fileConfig('logging.conf')# create loggerlogger = logging.getLogger('simpleExample')# 'application' codelogger.debug('debug message')
- logger.info('info message')
- logger.warn('warn message')
- logger.error('error message')
- logger.critical('critical message')
- [loggers]
- keys=root,simpleExample
- [handlers]
- keys=consoleHandler
- [formatters]
- keys=simpleFormatter
- [logger_root]
- level=DEBUG
- handlers=consoleHandler
- [logger_simpleExample]
- level=DEBUG
- handlers=consoleHandler
- qualname=simpleExample
- propagate=0[handler_consoleHandler]class=StreamHandlerlevel=DEBUGformatter=simpleFormatterargs=(sys.stdout,)[formatter_simpleFormatter]format=%(asctime)s - %(name)s - %(levelname)s - %(message)sdatefmt= '%m/%d/%Y %I:%M:%S %p'
- $ python simple_logging_config.py2005-03-19 15:38:55,977 - simpleExample - DEBUG - debug message2005-03-19 15:38:55,979 - simpleExample - INFO - info message2005-03-19 15:38:56,054 - simpleExample - WARNING - warn message2005-03-19 15:38:56,055 - simpleExample - ERROR - error message2005-03-19 15:38:56,130 - simpleExample - CRITICAL - critical message
以上程序結果會輸出到python console中:
其中logging.conf文件格式為:(其實就是將前一種方法的各項配置參數寫到logging.conf文件中)
與前面一樣,上述文件輸出結果為:
『捌』 python的日誌,如何做到一天是單獨一個日誌,並且定期清理
創建以日期為文件的log文件(如:20140911.log),寫日誌前判斷存放日誌路徑是否存在以當天日期為文件名的文件,如果存在添加日誌信息,不存在就創建,在寫日誌信息。
定期清理亦可以按照此思路來做
『玖』 python中log文件和txt文件的區別
沒區別啊。
log.txt是txt文件。
run.log是log文件。但兩個只是後綴格式的不同。都是普通文本文件。沒什麼特別的。
log是日誌的意思