2012-11-30 11 views
19

コンソールにログをとるためのロギング設定ファイルと、さまざまな形式とレベルのファイルがあります。私のpythonスクリプトでは、この設定をロードすることができ、基本的にコンソールとファイルの出力はOKです。pythonのfileConfigでログを使用してログファイルのファイル名を設定する方法

設定ファイルにファイル名を次のように設定しました。

pythonスクリプト自体にそのファイル名を設定することはできますか?

のpythonコード:

# set up logging 
logging.config.fileConfig(loginipath) 
logger = logging.getLogger('sLogger') 

# log something 
logger.debug('debug message') 
logger.info('info message') 
logger.warn('warn message') 
logger.error('error message') 
logger.critical('critical message') 

ログ設定ファイル:

[loggers] 
keys=root,sLogger 

[handlers] 
keys=consoleHandler,fileHandler 

[formatters] 
keys=fileFormatter,consoleFormatter 

[logger_root] 
level=DEBUG 
handlers=consoleHandler 

[logger_sLogger] 
level=DEBUG 
handlers=consoleHandler,fileHandler 
qualname=sLogger 
propagate=0 

[handler_consoleHandler] 
class=StreamHandler 
level=WARNING 
formatter=consoleFormatter 
args=(sys.stdout,) 

[handler_fileHandler] 
class=FileHandler 
level=DEBUG 
formatter=fileFormatter 
args=('logfile.log',) 

[formatter_fileFormatter] 
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s 
datefmt= 

[formatter_consoleFormatter] 
format=%(levelname)s - %(message)s 
datefmt= 

答えて

0

fileConfig()logging.config.dictConfig()を呼び出し、ファイル名だけを設定してみてください。

+0

defaults引数を追加するには、ファイル名を設定する方法の例を与えることができます。ありがとう。 –

29
そうのようなあなたの handler_fileHandlerセクションに変更し

[handler_fileHandler] 
class=FileHandler 
level=DEBUG 
formatter=fileFormatter 
args=('%(logfilename)s',) 

をしてからfileConfigコール

logging.fileConfig(loginipath, defaults={'logfilename': '/var/log/mylog.log'}) 
+2

私はこれが古いと知っていますが、それを呼び出すスクリプトではなく、設定ファイルの名前とパスにファイル名を指定することは可能ですか? – frei

関連する問題