python - 在 Python 中使用 if/else 语句进行日志记录是否存在一些中断?
问题描述
使用 if/else 语句记录是否有一些中断?我有 if/else 分支,我需要记录它们。我使用两个函数进行日志记录:
def write_log(var1, var2, var3):
log_file = 'C:\\path\\file.log'
logging.basicConfig(filename=log_file, filemode='w', format='%(message)s', level=logging.INFO)
log_message = f'{var1} : {var2} in {var3}'
logging.info(log_message)
几乎相同,但 log_file 变量:
def write_another_log(var1, var2, var3):
log_file = 'C:\\path\\another_file.log'
logging.basicConfig(filename=log_file, filemode='w', format='%(message)s', level=logging.INFO)
log_message = f'{var1} : {var2} in {var3}'
logging.info(log_message)
这是我的类功能的片段:
class Any():
...
@statickmethod
def needed_function():
...
if one_statement:
...
write_log(var1, var2, var3)
if another_statement:
...
write_another_log(var1, var2, var3)
在输出中我没有得到两个文件,所有信息都在一个文件中!我猜,这个功能会互相打断。我做了什么来修复它?挂了所有东西,但仍然不知道为什么它不起作用。
解决方案
logging.basicConfig
应该只调用一次。如果它发现已经有一个处理程序,它将什么也不做。不再记录到多个文件basic
(正如 basicConfig 所理解的那样)。
为此,您将设置您的日志记录,如下所示:
import logging
logger1 = logging.getLogger('logger1')
logger1.setLevel(logging.INFO)
fh1 = logging.FileHandler('path/to/file1.log')
fh1.setLevel(logging.INFO)
logger1.addHandler(fh1)
logger2 = logging.getLogger('logger2')
logger2.setLevel(logging.INFO)
fh2 = logging.FileHandler('path/to/file2.log')
fh2.setLevel(logging.INFO)
logger2.addHandler(fh2)
def write_log(var1, var2, var3):
log_message = f'{var1} : {var2} in {var3}'
logger1.info(log_message)
def write_another_log(var1, var2, var3):
log_message = f'{var1} : {var2} in {var3}'
logger2.info(log_message)
推荐阅读
- php - 基于商品数量的 Woocommerce Shipping Class 价格
- python - 将 Python 输出重定向到 Windows 应用程序 GUI 输入
- python-3.x - Python3脚本在成功执行后挂起
- pyspark - BooleanWritable 不能转换为 org.apache.hadoop.io.Text
- laravel - 存储数据时找不到404 laravel 8
- python - 激活环境后,尽管“which python”显示正确,但仍使用了错误的 python
- https - ActiveMQ 5.16.2 使用 HTTPS 保护 Web 控制台
- python - OSError:[Errno 22] 无效参数:'
' - vba - 如果 A1 到列尾没有值,则停止该过程
- arrays - 使用 put in for 循环以表格格式打印名称,但仅正确打印姓氏