擅长:python、mysql、java
<p>以“错误文件处理程序”为例。假设您的配置是这样的。唯一的区别是删除了文件名的前导斜杠</p>
<pre><code> error_file_handler:
class: logging.handlers.RotatingFileHandler
level: ERROR
formatter: simple
filename: tmp/errors.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
</code></pre>
<p>以下是处理此问题的代码:</p>
<pre><code>import os
def get_root_dir():
import __main__ as main
if main:
if hasattr(main, '__file__'):
script_name = os.path.abspath(os.path.join(os.getcwd(), main.__file__))
script_dir = os.path.dirname(script_name)
else:
script_dir = os.getcwd()
else:
script_dir = os.getcwd()
return script_dir
#logging.py
with open('../logging.yaml', 'r') as f:
log_cfg = yaml.safe_load(f.read())
log_name = os.path.join(get_root_dir(), log_cfg['handlers']['error_file_handler']['filename'])
log_cfg['handlers']['error_file_handler']['filename'] = log_name
logging.config.dictConfig(log_cfg)
logger = logging.getLogger(__name__)
</code></pre>