比方說,我有以下的配置日誌文件:Python記錄:記錄配置文件不斷變化的保存位置
[loggers]
keys=root,seeker,event
[handlers]
keys=consoleHandler,seekerFileHandler,eventFileHandler
[formatters]
keys=consoleFormatter,logFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler,seekerFileHandler,eventFileHandler
[logger_seeker]
level=DEBUG
handlers=consoleHandler,seekerFileHandler
qualname=seeker
propagate=0
[logger_event]
level=DEBUG
handlers=consoleHandler,eventFileHandler
qualname=event
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=consoleFormatter
args=(sys.stdout,)
[handler_seekerFileHandler]
class=FileHandler
level=DEBUG
formatter=logFormatter
args=('seeker.log','a')
[handler_eventFileHandler]
class=FileHandler
level=DEBUG
formatter=logFormatter
args=('event.log','a')
[formatter_consoleFormatter]
format=%(asctime)s - thread:%(thread)d - %(name)s - %(levelname)s | %(message)s
datefmt=%m/%d/%Y %X
[formatter_logFormatter]
format=%(asctime)s | %(message)s
datefmt=%m/%d/%Y %X
通常我會:
import logging
from logging.config import fileConfig
from os import getcwd
fileConfig(''.join([getcwd(),'/logging.conf']))
event_logger = logging.getLogger("event")
seeker_logger = logging.getLogger("seeker")
來處理每個記錄。不過,我傾向於在兩個獨立的平臺上運行該軟件:Windows和Linux,因此如果每個平臺都將其保存在「常見」位置,它將會很好。我正在尋找的東西是這樣的:
from sys import platform
if 'win' in platform:
#alter the save path to this location
if 'linux' in platform:
#alter save path to this location
但我不知道如何實現這與一個配置文件,任何想法?
BTW,爲什麼不直接使用'fileConfig(「logging.conf」)'? – nneonneo
我不認爲你可以用配置文件做聲明,所以要麼你有兩個,大多是類似的,每個平臺的配置文件,並選擇加載基於該平臺的其中之一,或者以後你猴子修補文件處理程序對象加載通用配置以設置正確的目標文件。 –
... getcwd是當前目錄;真的沒有意義(你可以獲得零安全性)。 – nneonneo