擅长:python、mysql、java
<p>在使用本文档中的简单文件处理程序时,有一些关于如何将所有权应用于日志文件的建议:</p>
<p><a href="https://docs.python.org/3.5/howto/logging-cookbook.html#customizing-handlers-with-dictconfig" rel="nofollow noreferrer">https://docs.python.org/3.5/howto/logging-cookbook.html#customizing-handlers-with-dictconfig</a></p>
<p>我按照这个模式对<code>TimedRotatingFileHandler</code>做了类似的事情,所以我想它对<code>WatchedFileHandler</code>也能起作用,但我没有专门尝试过这种类型。在</p>
<p>首先,我创建了一个与文档中的函数相似但不完全相同的函数:</p>
<pre><code>def owned_file_handler(filename, owner=None, *args, **kwargs):
'''
We need this so we can set ownership of the log files.
See: https://docs.python.org/3.5/howto/logging-cookbook.html#customizing-handlers-with-dictconfig
'''
if owner:
if not os.path.exists(filename):
open(filename, 'a').close()
shutil.chown(filename, *owner)
return logging.handlers.TimedRotatingFileHandler(filename, *args, **kwargs)
</code></pre>
<p>我们的想法是完成我们需要做的工作,然后将所有其他参数传递给实际的处理程序。在</p>
<p>下面是我如何更改字典中的处理程序配置:</p>
^{pr2}$
<p>我将<code>class</code>替换为回调<code>()</code>到我自己的函数(它将直接调用类),并添加了新的<code>owner</code>参数。它对我有用。在</p>