[英]How to override default “logfile” in python cli module?
我正在嘗試使用:
http://packages.python.org/pyCLI/#cli-log-logging-applications
特別是cli.log.LoggingApp
,它會自動為您提供-l --logfile
選項。 覆蓋默認logfile
屬性的最佳方法是什么? 如果未提供-l
,則默認為None
,輸出將轉到stdout
。
我想將其默認為硬編碼的本地文件名。
更新:我想基於可選的--dir = rundir參數的值設置日志文件位置。 我認為這涉及更多,因為您需要解析參數以了解要用於創建日志文件名稱的“ dir”的值。 我認為最好的解決方法是“手動”運行初始預運行和設置腳本,然后自己操作記錄器設置。
您可以通過向裝飾器提供kwarg logfile
文件來默認此文件名:
import cli.log
@cli.log.LoggingApp(logfile='default.log')
def foo(app):
print "I'm in the app!"
app.log.error("Things are seriously wrong!")
if __name__ == "__main__":
foo.run()
這樣做的唯一問題(至少我可以看到)是所生成的幫助是錯誤的。 它仍然指出默認值是stdout
(從2.0.2版開始)。 看來幫助文本已硬編碼在LoggingMixin
類中。
這也不完全起作用:在命令行應用程序中定義日志記錄應用程序,然后在其中指定日志文件。
問題是您不會得到冗長/安靜的內容。
@cli.app.CommandLineApp(description=globals()["__doc__"])
def main(app):
logfile = app.params.logfile
if logfile is None:
logfile = "mylog.log"
@cli.log.LoggingApp(description=globals()["__doc__"], logfile=logfile)
def main_with_log(app):
print("Printing log output to <%s>." % app.params.logfile
main.add_param("-d", "--dir", dest="dirname", default="./", help = "no help")
main.add_param("-l", "--logfile", default=None, help="log to file.")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.