相关疑难解决方法(0)

记录器配置以记录到文件并打印到stdout

我正在使用Python的日志记录模块将一些调试字符串记录到一个非常好的文件中.现在另外,我想使用这个模块也将字符串打印到stdout.我该怎么做呢?为了将我的字符串记录到文件,我使用以下代码:

import logging
import logging.handlers
logger = logging.getLogger("")
logger.setLevel(logging.DEBUG)
handler = logging.handlers.RotatingFileHandler(
    LOGFILE, maxBytes=(1048576*5), backupCount=7
)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
Run Code Online (Sandbox Code Playgroud)

然后调用一个记录器函数

logger.debug("I am written to the file")
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

python logging stdout file

310
推荐指数
7
解决办法
21万
查看次数

打印到屏幕并同时写入文件

我在网上发现了一些通常有效的代码,但我想在同一个程序中多次使用它(将不同的东西写入不同的文件,同时仍然一直打印到屏幕上).

也就是说,当它关闭时,我认为sys.stdout关闭,所以打印完全,并再次使用这个类失败.我尝试重新导入sys和其他愚蠢的东西,但我无法让它工作.

这是该网站,代码为groups.google.com/group/comp.lang.python/browse_thread/thread/d25a9f5608e473af/

import sys

class MyWriter:

    def __init__(self, stdout, filename):
        self.stdout = stdout
        self.logfile = file(filename, 'a')

    def write(self, text):
        self.stdout.write(text)
        self.logfile.write(text)

    def close(self):
        self.stdout.close()
        self.logfile.close()

writer = MyWriter(sys.stdout, 'log.txt')
sys.stdout = writer

print 'test' 
Run Code Online (Sandbox Code Playgroud)

python

41
推荐指数
3
解决办法
4万
查看次数

PyCharm记录输出颜色

我正在使用PyCharm在Mac OS X中开发GAE应用程序.有没有办法在PyCharm的运行控制台中显示颜色?

我已经设置了一个处理器来输出ansi格式的颜色.然后,我添加了处理程序:

LOG = logging.getLogger()
LOG.setLevel(logging.DEBUG)
for handler in LOG.handlers:
    LOG.removeHandler(handler)

LOG.addHandler(ColorHandler())

LOG.info('hello!')
LOG.warning('hello!')
LOG.debug('hello!')
LOG.error('hello!')
Run Code Online (Sandbox Code Playgroud)

但颜色是一样的.

PyCharm运行控制台输出

编辑:

JetBrains 问题跟踪器的响应:将片段的第55行从sys.stderr更改为sys.stdout.stderr流总是用红色着色而stdout不是.

现在颜色正确显示.

python logging google-app-engine pycharm

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

如何从我的Python Spark脚本登录

我有一个我运行的Python Spark程序spark-submit.我想把日志语句放在其中.

logging.info("This is an informative message.")
logging.debug("This is a debug message.")
Run Code Online (Sandbox Code Playgroud)

我想使用Spark正在使用的相同记录器,以便日志消息以相同的格式出现,并且级别由相同的配置文件控制.我该怎么做呢?

我已经尝试将logging语句放在代码中并以a开头logging.getLogger().在这两种情况下,我都看到Spark的日志消息,但不是我的.我一直在关注Python日志记录文档,但还是无法从中找到它.

不确定这是否是提交给Spark的脚本特有的,或者我不了解日志记录的工作原理.

python logging apache-spark

36
推荐指数
4
解决办法
4万
查看次数

设置日志记录级别

我正在尝试使用标准库来调试我的代码:

这很好用:

import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.info('message')
Run Code Online (Sandbox Code Playgroud)

我无法为较低级别的记录器工作:

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.info('message')

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug('message')
Run Code Online (Sandbox Code Playgroud)

我没有得到任何回应.

python logging

33
推荐指数
4
解决办法
3万
查看次数

将打印重定向到日志文件

好的.我已经完成了我的第一个python程序.它有大约1000行代码.在开发期间,我print在运行命令之前放置了大量语句,os.system() 例如,

print "running command",cmd
os.system(cmd)
Run Code Online (Sandbox Code Playgroud)

现在我已经完成了这个计划.我考虑过对它们进行评论,但重定向所有这些不必要的打印(我无法删除所有print语句 - 因为有些语句为用户提供有用的信息)到日志文件中会更有用吗?任何技巧或提示.

python printing logging

29
推荐指数
4
解决办法
7万
查看次数

如何将TensorFlow日志记录重定向到文件?

我正在使用TensorFlow-Slim,它有一些有用的日志记录打印到控制台tf.logging.我想将这些记录重定向到文本文件,但找不到这样做的方法.我查看了tf_logging.py源代码,它公开了以下内容,但似乎没有将日志写入文件的选项.如果我错过了什么,请告诉我.

__all__ = ['log', 'debug', 'error', 'fatal', 'info', 'warn', 'warning',
           'DEBUG', 'ERROR', 'FATAL', 'INFO', 'WARN',
           'flush', 'log_every_n', 'log_first_n', 'vlog',
           'TaskLevelStatusMessage', 'get_verbosity', 'set_verbosity']
Run Code Online (Sandbox Code Playgroud)

logging tensorflow

23
推荐指数
2
解决办法
2万
查看次数

Django rest框架在不同的文件上记录不同的级别

我正在研究Django REST 框架,我希望有单独的文件来记录数据。

我想要一个用于简单事务的文件,例如 GET、PUT、POST 等,以及一个包含错误的文件,我将在发生错误时收集这些错误。

我一直在阅读Django Logging Documentation并且我想出了一些关于如何记录信息数据的配置。配置示例如下:

设置.py

STATIC_URL = '/static/'
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
LOGGING_ROOT = os.path.join(STATIC_ROOT, 'logging')

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': LOGGING_ROOT + "/info.log",
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'INFO',
            'propagate': True,
        },
    },
}
Run Code Online (Sandbox Code Playgroud)

它作为文件中的预期数据样本工作:

"PUT /upload/dat.txt HTTP/1.1" 204 14
"OPTIONS / HTTP/1.1" 200 10020
"GET / HTTP/1.1" 200 9916
Run Code Online (Sandbox Code Playgroud)

我尝试在 settings.py …

python django logging error-logging

9
推荐指数
1
解决办法
4457
查看次数

如何将python脚本cmd输出重定向到文件?

所以我有一个python脚本输出文本到控制台,我需要记录到文件,但脚本是非常复杂的,我不编码python,所以我宁愿不改变它.

我想做这个

>python script.py arg1 arg2 ... argn > "somefile.txt"
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我的猜测是python采取>"somefile.txt"作为参数..

这可以实现吗?如何实现?

python cmd

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

使 Python 记录器记录所有 stdout 和 stderr 消息

使用 python logging 包,并编写一个类 Log,我想将 stdout 和 stderr 发送到日志文件:

log = Log("log.txt")
print "line1"
print "line2"
print >>sys.stderr, "err1"
del log
print "line to screen only"
Run Code Online (Sandbox Code Playgroud)

输出日志文件将包含:

16/11/2017 09:51:58 INFO - line1
16/11/2017 09:51:58 INFO - line2
16/11/2017 09:51:58 INFO - err1
Run Code Online (Sandbox Code Playgroud)

知道如何编写这个 Log 类,保持“日志”包(时间戳,...)的优势吗?

python logging stdout tee

2
推荐指数
1
解决办法
6773
查看次数