簡體   English   中英

如何在python cli模塊中覆蓋默認的“日志文件”?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM