在使用 timedrotatingfilehandler python日誌切分的時候,遇到錯誤:
os.rename(source, dest)
permissionerror:
[winerror 32
] 另乙個程式正在使用此檔案,程序無法訪問
**是單程序的,最初遇到這個錯誤比較疑惑,最後發現是在**中
import django
django.setup(
)
引用了django,因此同時有乙個django程序存在。
解決方法
這樣修改後,最終實現效果與之前有所不同,不會有類似logger.log這樣的命名格式,所有的log檔名都加上了時間戳,可以通過suffix控制切割的頻率。
class
safefilehandler
(filehandler)
:def
__init__
(self, filename, mode=
"a", encoding=
none
, delay=
0, suffix=
"%y-%m-%d_%h"):
if codecs is
none
: encoding =
none
current_time = time.strftime(suffix, time.localtime())
filehandler.__init__(self, filename +
"."+ current_time, mode, encoding, delay)
self.filename = os.fspath(filename)
self.mode = mode
self.encoding = encoding
self.suffix = suffix
self.suffix_time = current_time
defemit
(self, record)
:try
:if self.check_base_filename():
self.build_base_filename(
) filehandler.emit(self, record)
except
(keyboardinterrupt, systemexit)
:raise
except
: self.handleerror(record)
defcheck_base_filename
(self)
: time_tuple = time.localtime(
)if self.suffix_time != time.strftime(self.suffix, time_tuple)
ornot os.path.exists(
os.path.abspath(self.filename)
+'.'
+ self.suffix_time)
:return
1else
:return
0def
build_base_filename
(self)
:if self.stream:
self.stream.close(
) self.stream =
none
# if self.suffix_time != "":
# index = self.basefilename.find("." + self.suffix_time)
# if index == -1:
# index = self.basefilename.rfind(".")
# self.basefilename = self.basefilename[:index]
current_time_tuple = time.localtime(
) self.suffix_time = time.strftime(self.suffix, current_time_tuple)
self.basefilename = os.path.abspath(self.filename)
+"."
+ self.suffix_time
ifnot self.delay:
self.stream =
open
(self.basefilename, self.mode, encoding=self.encoding)
python多程序列印輸出 多程序列印日誌
多程序的日誌和多執行緒的日誌有一點區別。原因是 python 的 logging 包不支援程序共享鎖,所以來自不同的程序的日誌可能會混在一起。我們嘗試一下在上邊的例子裡加乙個基礎日誌。下邊是 import loggingimport multiprocessingfrom multiprocessi...
python多程序 python多程序
當有多個非相關任務需要處理時,並行能大大提高處理速度。這裡簡要介紹python的multiprocessing模組。簡單多程序編寫 當我們任務數量確定而且比較少的時候,可以手動為每個任務指定乙個程序來執行。import multiprocessing as mp def f a print a if...
python專案 多程序日誌分割
前文說到uwsgi日誌分割,那個是屬於uwsgi專案的執行日誌,我們如果需要列印一些資訊的話,如果全放在裡面由於太多且多執行緒多程序會導致日誌錯亂,所以我決定再增加乙個程式執行日誌模組,然後踩坑開始了。def setup log log name 建立logger物件。傳入logger名字 logg...