<p>好的,有一个重写的问题:</p>
<p>我看到它是以另一种方式完成的,而不是您这样做的——获取一个记录器,然后设置它(模块中有两行,而不是一行)。记录器是每个模块的东西,并且始终存在</p>
<p>在您的情况下,每次都重新获取记录器并重新生成处理程序</p>
<p>这样你就不能利用<code>logging</code>模块提供的美丽的可能性</p>
<hr/>
<p>因此,基本上,另一种方法是:</p>
<p>在每个脚本中执行<code>logger = logging.getLogger(__name__)</code>,通常位于导入下方的顶部附近</p>
<p>+您只需调用<code>logit.setupLogger(logger)</code>。(在您的情况下,在下一行中。在脚本的情况下,我将它保留在main函数中-这样,如果我将脚本作为模块导入,我将调用<code>imported_module.logger</code>上需要的任何日志设置,以便它不会垃圾邮件发送错误的日志文件。:D)</p>
<p>重写<code>logit.py</code>:</p>
<pre><code>import sys, logging, logging.handlers, pathlib
#Path for all log files for scriptHub
logdir = str(pathlib.Path(__file__).parent.absolute())
#Creates the log file based on a given name from the script
def create(my_logger, level=logging.DEBUG):
#create filename
log_filename = logdir+"/sysLogs/"+logger.name+".logs"
my_logger.setLevel(level)
#Formats the log:
formatter = logging.Formatter('%(asctime)s - %(message)s - %(name)s')
#Gives the log file a limit for 100mb if it goes bigger than this, it will create another file, but keep the old one
handler = logging.handlers.RotatingFileHandler(log_filename, maxBytes=100000000, backupCount=1)
handler.setFormatter(formatter)
#Handlers need to be cleared to stop duplicated logs.
if (my_logger.hasHandlers()):
my_logger.handlers.clear()
my_logger.addHandler(handler)
</code></pre>
<p>这样,您只需在<code>logit</code>中设置记录器的内部(包括文件处理程序),并且可以使用标准的<code>logging</code>东西:</p>
<ul>
<li>您可以在模块中使用任何级别的日志记录:</li>
</ul>
<pre><code>logger.info("like")
logger.warning("this")
</code></pre>
<ul>
<li>您可以像上面那样在代码中编写<strong>每个<strong>日志消息-使代码充满日志消息请记住,调试消息应该包含调试所需的所有信息,这有时包括大量信息+请记住,调试消息可能存在于信息消息旁边,只是具有不同的详细信息(例如,“从X获取信息”是信息,“发送请求“some/address/here”和接收的“chunk of data here”是调试)</李>
<li>当您需要降低级别时-例如,您调试了消息,厌倦了看到这么多的.much.info(或者只是从开发到生产)-您只需将<code>logit.setupLogger(logger)</code>更改为<code>logit.setupLogger(logger, logging.INFO)</code>或任何您需要的级别</李>
</ul>
<hr/>
<p>按照您的方式记录日志似乎是一个好主意,但是<code>logging</code>模块在您学习如何使用它时非常强大<a href="https://docs.python.org/3/howto/logging.html" rel="nofollow noreferrer">Here's a How-To from Python's docs</a>,但是它有很多信息,所以<a href="https://realpython.com/python-logging/" rel="nofollow noreferrer">simpler tutorials on python logging</a>是一个更好的开始</p>
<p>Tbh我也从我自己的日志记录实践开始,甚至在阅读了文档和教程之后,因为我根本不懂。当我在使用的库中看到它时,我才切换到上面的方法。:)</p>