有没有办法更改未使用 basicConfig 配置的记录器对象的文件模式?

2024-01-16

如果我使用 logger =logging.getLogger("Name") 创建记录器对象,我无法将文件模式从追加('a')更改为写入('w')。如果我将根记录器与 basicConfig 一起使用,则可以,但是当我想要的只是从 DEBUG 级别开始的我自己的消息时,我会记录大量系统调试消息。

我希望 (1) 将我自己的记录器对象的文件模式更改为“w” 或 (2) 将过滤器添加到根记录器。是否有可能从根记录器中过滤掉这些调试消息?

def create_log():
    # create logger for "Sample App"
    logger = logging.getLogger('automated_testing')
    logger.setLevel(logging.DEBUG)

    # create file handler which logs even debug messages
    fh = logging.FileHandler('results.log')
    fh.setLevel(logging.DEBUG)
    # create console handler with a higher log level
    ch = logging.StreamHandler(stream=sys.stdout)
    ch.setLevel(logging.DEBUG)
    # create formatter and add it to the handlers
    formatter = logging.Formatter('[%(asctime)s] %(levelname)8s --- %(message)s ' +
                                  '(%(filename)s:%(lineno)s)',datefmt='%Y-%m-%d %H:%M:%S')
    fh.setFormatter(formatter)
    ch.setFormatter(formatter)
    # add the handlers to the logger
    logger.addHandler(ch)
    logger.addHandler(fh)

    return logger

就像是:

import sys
import logging

def create_logger():
    # create logger for "Sample App"
    logger = logging.getLogger('automated_testing')
    logger.setLevel(logging.DEBUG)

    # create file handler which logs even debug messages
    fh = logging.FileHandler('results.log', mode='w')
    fh.setLevel(logging.DEBUG)

    # create console handler with a higher log level
    ch = logging.StreamHandler(stream=sys.stdout)
    ch.setLevel(logging.INFO)

    # create formatter and add it to the handlers
    formatter = logging.Formatter('[%(asctime)s] %(levelname)8s --- %(message)s ' +
                                  '(%(filename)s:%(lineno)s)',datefmt='%Y-%m-%d %H:%M:%S')
    fh.setFormatter(formatter)
    ch.setFormatter(formatter)

    # add the handlers to the logger
    logger.addHandler(ch)
    logger.addHandler(fh)

    return logger

logger = create_logger()


logger.log(logging.NOTSET,   "NOTSET   Message - 0")
logger.log(logging.DEBUG,    "DEBUG    Message - 10")
logger.log(logging.INFO,     "INFO     Message - 20")
logger.log(logging.WARNING,  "WARNING  Message - 30")
logger.log(logging.CRITICAL, "CRITICAL Message - 40")

打印到标准输出:



[2015-03-16 17:51:08]     INFO --- INFO     Message - 20 (temp3.py:34)
[2015-03-16 17:51:08]  WARNING --- WARNING  Message - 30 (temp3.py:35)
[2015-03-16 17:51:08] CRITICAL --- CRITICAL Message - 40 (temp3.py:36)
  

写入(而不是追加)到 results.log:



[2015-03-16 17:51:08]    DEBUG --- DEBUG    Message - 10 (temp3.py:33)
[2015-03-16 17:51:08]     INFO --- INFO     Message - 20 (temp3.py:34)
[2015-03-16 17:51:08]  WARNING --- WARNING  Message - 30 (temp3.py:35)
[2015-03-16 17:51:08] CRITICAL --- CRITICAL Message - 40 (temp3.py:36)
  

DEBUG+ 记录在 results.txt 中,而仅INFO+ 发送到标准输出。

请注意,NOTSET然后,日志条目会传递到根记录器,因为根记录器上没有任何处理程序,因此会被丢弃。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法更改未使用 basicConfig 配置的记录器对象的文件模式? 的相关文章

  • 如何并排绘制具有相同 X 坐标的条形图(“闪避”)

    import matplotlib pyplot as plt gridnumber range 1 4 b1 plt bar gridnumber 0 2 0 3 0 1 width 0 4 label Bar 1 align cente
  • 在二维数组中进行所有可能的组合

    我正在尝试制作具有所有可能组合的 4x4 16 像素黑白图像数组 我制作了以下数组作为模板 template 0 0 0 0 start with all white pixels 0 0 0 0 0 0 0 0 0 0 0 0 然后我想迭
  • 如何打印前面有一定数量空格的整数?

    C has printf Xd Y 它只打印整数 X 并使其在控制台窗口上占据 Y 空格 例如 printf 3d 10 console 10 printf 5d 5 console 5 我如何在 python 3 中使用它 This pr
  • 按每个元素中出现的数字对字符串列表进行排序[重复]

    这个问题在这里已经有答案了 我有一个脚本 其目的是对不断下载到服务器上的空间数据集文件进行排序和处理 我的列表目前大致如下 list file t00Z wrff02 grib2 file t00Z wrff03 grib2 file t0
  • 过滤器返回 true 或 false

    我正在使用过滤器在 data it 返回对象中查找 id 它返回的对象不是 true 或 false 如果我怎样才能返回 true 或 falseval recoredId valueId var hasMatch data filter
  • caffe安装:opencv libpng16.so.16链接问题

    我正在尝试在 Ubuntu 14 04 机器上使用 python 接口编译 caffe 我已经安装了 Anaconda 和 opencvconda install opencv 我还安装了咖啡中规定的所有要求 并更改了注释块makefile
  • 如何在plotly(python)中的刻度标签和图形之间添加空格?

    如果我使用绘图创建水平条形图 则每个条形的标签都与图表相对应 我想在标签和图表之间添加一些空间 填充 边距 我怎样才能做到这一点 Example import plotly offline as py import plotly graph
  • pandas 数据框的最大大小

    我正在尝试使用读取一个有点大的数据集pandas read csv or read stata功能 但我不断遇到Memory Errors 数据帧的最大大小是多少 我的理解是 只要数据适合内存 数据帧就应该没问题 这对我来说不应该是问题 还
  • 对法语文本进行词形还原[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些法语文本需要以某种方式进行处理 为此 我需要 首先 将文本标记为单词 然后对这些单词进行词形还原以避免多次处理相同的词根 据我
  • 尝试校准keras模型

    我正在尝试通过 Sklearn 实现来校准我的 CNN 模型CalibratedClassifierCV 尝试将其包装为KerasClassifier并覆盖预测功能但没有成功 有人可以说我做错了什么吗 这是模型代码 def create m
  • 如何在 python 中使用交叉验证执行 GridSearchCV

    我正在执行超参数调整RandomForest如下使用GridSearchCV X np array df features all features y np array df gold standard labels x train x
  • 为什么 pip 已经是最新的了却要求我升级?

    我全新安装了 python 3 7 1 64 位 并使用最新的 pyCharm 作为我的 IDE 我在这台机器上没有安装其他 python 我去安装 numpy 并收到以下消息 venv C Users John PycharmProjec
  • 类变量:“类列表”与“类布尔值”[重复]

    这个问题在这里已经有答案了 我不明白以下示例的区别 一次类的实例可以更改另一个实例的类变量 而另一次则不能 示例1 class MyClass object mylist def add self self mylist append 1
  • “KMeans”对象没有属性“k”

    我使用 Yellowbrick 包绘制数据集的肘部曲线 以使用 KMeans 作为模型找到数据集的最佳簇数 我正在使用 Scikit learn KMeans 和 Yellowbrick kelbowvisualizer 函数 生成了肘部曲
  • 为什么我会在 Python 字符串格式中使用除 %r 之外的其他内容?

    我偶尔会使用 Python 字符串格式 这可以像这样完成 print int i Float f String s 54 34 434 some text 但是 这也可以这样做 print int r Float r String r 54
  • 带 Qt 的菜单栏/系统托盘应用程序

    我是 Qt PyQt 的新手 我正在尝试制作一个应用程序 其功能将从菜单栏 系统托盘执行 这里展示了一个完美的例子 我找不到关于如何做到这一点的好资源 有人可以建议吗 Thanks 我认为您正在寻找与QMenu and QMainWindo
  • 为数据集生成随机 JSON 结构排列

    我想生成 JSON 结构的许多不同排列作为同一数据集的表示 最好不需要对实现进行硬编码 例如 给定以下 JSON name smith occupation agent enemy humanity nemesis neo 应该产生许多不同
  • 尝试 numba 时出现巨大错误

    我在使用 numba 时遇到了大量错误 讽刺的是 正确的结果是在错误之后打印的 我正在使用最新的 Anaconda python 并安装了 numba conda install numba 一次在 Ubuntu 13 64 位和 anac
  • 关闭正在运行代码的 IPython Notebook

    怎么运行的 我在 IPython Notebook 中运行了一些代码 一些迭代工作 我不小心关闭了正在运行的笔记本的浏览器 但回到 IPython 仪表板 我发现这个特定的笔记本尚未关闭 所以如果我再次打开笔记本 我会在它正在执行的代码前面
  • 美丽的汤刮 - 登录凭据不起作用

    尝试使用登录凭据抓取页面 payload email gmail com password urls login url https www spotrac com signin url https www spotrac com nba

随机推荐

  • 在android中维护会话(应用程序在服务器端保持身份验证)

    我正在android中构建一个登录应用程序 其中我点击一个url 带有用户名和密码 直到该部分它工作正常 但之后每当我点击一个url 一旦用户通过身份验证 它什么都不返回 即错误消息 例如请先登录 然而 它在非常相似的 iPhone 应用程
  • 用于在原子编辑器中将选择内容转换为大写(或小写)的键盘快捷键

    在 Atom 编辑器中将当前选定的文本转换为大写 或小写 的键盘快捷键是什么 在 Windows 和 Linux 上 Ctrl K then Ctrl U for uppercase Ctrl K then Ctrl L for lower
  • GetSystemService DOWNLOAD_SERVICE 处于非活动状态

    在非活动类中的简单方法中 我使用代码 mgr DownloadManager mContext getSystemService DOWNLOAD SERVICE 在非活动类中 我的构造函数如下所示 public Download23 Co
  • Gradle - 如何从命令行检测 --debug 标志?

    我有一个正在执行命令的任务 我需要更改传递给命令的参数 具体取决于我是否这样做 gradlew debug myTask or gradlew myTask 我认为这就像这样做一样简单 project logger isEnabled Lo
  • UIDatePicker的minimumDate和maximumDate可以包含时间吗?

    需要一个具有特定最大和最小日期的 UIDatePicker和时间 目前 NSDatePicker minimumDate 和 maximumDate 似乎只考虑日期 处理这个问题的正确方法是什么 NSDates 包含日期和时间 来自文档 N
  • 为Android编译imagemagick

    我正在尝试编译这个项目https github com lilac Android ImageMagick https github com lilac Android ImageMagick 要生成 android magick so 我
  • 单色黑白位图

    我正在 Android 上工作 将从相机捕获的彩色位图转换为黑白单色图像 没有灰色 我有几种灰度转换方法 但我无法将图像转换为黑白格式 有没有什么方法可以将位图转换成这种格式 一种可靠的方法是平均阈值位图 该方法描述于这张纸 http ww
  • 迭代 HashSet 最快/最安全的方法是什么?

    我对 C 还很陌生 但通过论坛帖子注意到使用HashSet代替List在特定情况下 我当前的情况并不是将大量数据存储在单个List完全正确 但我不必经常检查它的成员 问题是我确实也需要迭代它 但它们存储或检索的顺序实际上并不重要 我已经读到
  • 以编程方式更改 Windows 中的打印机首选项

    我编写了一个为新用户安装多台打印机的脚本 我想更改其中一些设置 以便它们可以在页面的双面打印 我相信这涉及使用 printui 修改属性 但是它可能需要 VB 脚本或可能需要另一种 NET 语言 我会使用 VB C 或 IronPython
  • Axis2 会话管理

    我正在axis2中构建一个小型web服务 自下而上 我编写java类并让eclipse wtp生成服务 我想使用会话 以便用户可以使用用户名登录并通过 如果数据库中存在该用户名 而不是在会话上下文中使用 Web 服务 坦白说 我不知道从哪里
  • loader 和 AsyncTask 有什么区别? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想知道 Android loader 和 AsyncTask 之间的区别 这是 Loader 上的演示 package com android
  • 处理 Datomic 中存储的无序消息?

    背景 在分布式系统中 消息可能会以无序的方式到达 例如 如果消息 A 在时间 T1 发送 消息 B 在时间 T2 发送 则有可能在 A 之前接收到 B 例如 如果 A 是诸如 CustomerRegistered 的消息而 B 是 Cust
  • iOS7 中奇怪的 UITabBar 颜色不一致

    我使用的是 iOS 7tintColor and barTintColor属性来为我的颜色着色UITabBar在 UITabBarController 的子类中使用以下代码 UITabBar appearance setBarTintCol
  • 在 OpenJdk 中,如何使用appendedfontpath属性设置字体目录

    我试图让我的应用程序使用 OpenJdk 安装中特定位置的字体附加字体路径财产 但它对我不起作用 jre1 8 0 121 1 bin java Dappendedfontpath usr lib fonts jar lib songkon
  • 当 URL 中不存在可选参数时找不到 Web API 操作

    请帮忙 我必须更改 Web API 的路由才能使用 URL 中的方法 public class RouteConfig public static void RegisterRoutes RouteCollection routes rou
  • 防止引导工具提示在单击时隐藏

    我想防止工具提示在我单击它时隐藏 除了无论我点击 body 时它都应该隐藏它 即使在选项卡上 工具提示也应该起作用 jsfiddle http jsfiddle net C5GBU 41 http jsfiddle net C5GBU 41
  • Blade.php 方法将结果输出到表单

    我目前正在使用 Laravel 4 2 框架和 twitter bootstrap 设计一个网站 我已经设置了我的master blade php文件 在每个页面的顶部显示一个导航栏 基本上 如果用户登录 我想显示一个导航栏 其选项与用户未
  • 如何将一列中的数据分成两列?

    我最近刚刚开始学习 MS Access 和 SQL Server 中的 SQL 所以我的知识非常有限 但我正在寻找有关 MS Access 中查询的帮助 我知道如何将 2 列合并为 1 列 并用逗号或我想要的任何符号分隔最终结果 但是 我该
  • 错误:找不到您尝试购买的商品

    我是一名安卓初学者 我创建了一个测试应用程序 它只有一个按钮 当您单击它时 它会启动应用内购买 几天前还可以用 但现在不行了 我还检查了其他相关帖子 我尝试了所有 测试帐户 和 活动应用内产品 方法 但它仍然给我相同的错误消息 另外 我尝试
  • 有没有办法更改未使用 basicConfig 配置的记录器对象的文件模式?

    如果我使用 logger logging getLogger Name 创建记录器对象 我无法将文件模式从追加 a 更改为写入 w 如果我将根记录器与 basicConfig 一起使用 则可以 但是当我想要的只是从 DEBUG 级别开始的我