相关疑难解决方法(0)

命名Python记录器

在Django,我到处都有记录器,目前有硬编码的名字.

对于模块级日志记录(即,在视图函数模块中),我有这样做的冲动.

log = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)

对于类级别的日志记录(即,在类__init__方法中),我有这样做的冲动.

self.log = logging.getLogger("%s.%s" % (
    self.__module__, self.__class__.__name__))
Run Code Online (Sandbox Code Playgroud)

在我解决几十次事件之前,我正在寻找第二意见getLogger("hard.coded.name").

这会有用吗?还有其他人用同样缺乏想象力的方式命名他们的记录器吗?

此外,我应该分解并为此日志定义编写类装饰器吗?

python django logging

47
推荐指数
1
解决办法
1万
查看次数

禁用每个方法/功能的记录?

我是Python日志的新手,我可以很容易地看到它对我提出的家庭酿造解决方案的优越性.

我似乎无法找到答案的一个问题:如何基于每个方法/函数压制记录消息?

我的假设模块包含一个函数.在我开发时,日志调用是一个很好的帮助:

logging.basicConfig(level=logging.DEBUG,
                format=('%(levelname)s: %(funcName)s(): %(message)s'))
log = logging.getLogger()

my_func1():
    stuff...
    log.debug("Here's an interesting value: %r" % some_value)
    log.info("Going great here!")
    more stuff...
Run Code Online (Sandbox Code Playgroud)

当我在'my_func1'上完成工作并开始处理第二个函数'my_func2'时,来自'my_func1'的日志消息开始从"有用"变为"杂乱".

是否存在单行魔术语句,例如'logging.disabled_in_this_func()',我可以将其添加到'my_func1'的顶部以禁用'my_func1'中的所有日志记录调用,但仍然在所有其他函数/方法中保留日志记录调用不变?

谢谢

linux,Python 2.7.1

python logging

14
推荐指数
2
解决办法
4411
查看次数

在 Python 日志记录中向每条日志消息添加信息

我正在使用带有日志记录模块的Python,并且想将socket.hostname()添加到每条日志消息中,我必须在每条消息中运行此查询并且不能使用

name = socket.hostname() 
Run Code Online (Sandbox Code Playgroud)

然后用名称记录格式

我正在研究这个使用日志过滤器的示例,但我这里需要的不是过滤器,而是对每个日志消息的简单操作。

我怎样才能达到想要的结果?

python logging python-3.x python-logging

6
推荐指数
2
解决办法
4022
查看次数

如何在Python日志配置文件(logging.conf)中添加过滤器

是否可以在日志记录配置文件中添加/使用过滤器?例如,以下代码是否有等效的设置?

import logging

# Set up loggers and handlers.
# ...

    class LevelFilter(logging.Filter):
        def __init__(self, level):
            self.level = level

        def filter(self, record):
            return record.levelno == self.level

    logFileHandler.addFilter(LevelFilter(logging.DEBUG))
Run Code Online (Sandbox Code Playgroud)

用于logging.conf中的处理程序

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=format_01
args=(sys.stdout,)
Run Code Online (Sandbox Code Playgroud)

我们可以像处理程序一样在配置文件(logging.conf)中为上面的Python代码编写日志过滤器吗?(Python代码仅作为示例)

python logging

5
推荐指数
2
解决办法
9109
查看次数

如何在调试模式下停止sql日志记录?

如何在debug = True中运行django而不受sql日志记录的轰炸?

被迫眯着眼​​睛看着所有这些噪音使我很难看到我的调试信息....

[Thu Jul 28 19:56:27 2011] [error] DEBUG:(0.000) SELECT `django_session`.`session_key`, `django_session`.`session_data`, `django_session`.`expire_date` FROM `django_session` WHERE (`django_session`.`session_key` = foobar  AND `django_session`.`expire_date` > 2011-07-28 19:56:27 ); args=('foobar', u'2011-07-28 19:56:27')
[Thu Jul 28 19:56:27 2011] [error] DEBUG:(0.000) SELECT `Users`.`id`, `Users`.`auth_id`, `Users`.`username`, `Users`.`pwhash`, `Users`.`first_name`, `Users`.`last_name`, `Users`.`email`, `Users`.`notes`, `Users`.`force_password_change`, `Users`.`deleted`, `Users`.`deleted_username` FROM `Users` WHERE (`Users`.`deleted` = False  AND `Users`.`id` = 2 ); args=(False, 2)
[Thu Jul 28 19:56:27 2011] [error] DEBUG:(0.000) SELECT `Auths`.`id`, `Auths`.`developer_id`, `Auths`.`application_id` FROM `Auths` WHERE `Auths`.`id` = 2 ; …
Run Code Online (Sandbox Code Playgroud)

django debugging logging

4
推荐指数
1
解决办法
2393
查看次数

具有额外详细深度的 Python 日志级别

我想扩展现有的logging.LEVEL机制,以便我可以选择在不同的日志记录级别(例如 、 等)之间切换DEBUGINFO同时还为每个级别ERROR定义。depth

例如,假设日志记录级别设置为logging.DEBUG。所有log.DEBUG()呼叫都将可见。

log.debug('Limit event has occurred.')
Run Code Online (Sandbox Code Playgroud)

所以我得到:

[2016-10-08 10:07:29,807] <__main__> {myApp:test_condition_info:93} (DEBUG) Limit event has occurred.
Run Code Online (Sandbox Code Playgroud)

我所追求的是将额外的深度级别传递给调用log.debug(),以便我可以控制消息中打印的详细信息量DEBUG,而不是完全启用禁用调试级别,而是控制调试消息将携带多少信息。因此,在所有情况下,我们都会看到调试消息,但在某些情况下,它不太详细,并且在某些情况下包含更多信息。

例如:

log.debug('Limit event has occurred.', verbosity=1)
log.debug('The following user has caused the limit event: %s' % (user), verbosity=3)
log.debug('The following files have been affected: %s' % [list_of_files], verbosity=7)
Run Code Online (Sandbox Code Playgroud)

因此,当日志记录级别设置为DEBUG且全局详细程度设置为 时,GLOBAL_VERBOSITY=1我们将得到以下结果:

[2016-10-08 10:07:29,807] <__main__> {myApp:test_condition_info:93} …
Run Code Online (Sandbox Code Playgroud)

python logging

4
推荐指数
1
解决办法
1679
查看次数

标签 统计

logging ×6

python ×5

django ×2

debugging ×1

python-3.x ×1

python-logging ×1