与标题相同:如何Rails.logger在运行rspec时打印到控制台/标准输出?例如.
Rails.logger.info "I WANT this to go to console/stdout when rspec is running"
puts "Like how the puts function works"
Run Code Online (Sandbox Code Playgroud)
我还是希望Rails.logger去log/test.log了.
有人能告诉我为什么这不起作用?我正在玩文件描述符,但感觉有点迷失.
#!/bin/bash
echo "This"
echo "is" >&2
echo "a" >&3
echo "test." >&4
Run Code Online (Sandbox Code Playgroud)
前三行运行正常,但最后两行错误.为什么?
我有一个使用log4j的java应用程序.
配置:
log4j.rootLogger=info, file
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=${user.home}/logs/app.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d [%t] %c %p %m%n
Run Code Online (Sandbox Code Playgroud)
所以所有日志语句都正确地附加到文件中,但我丢失了stdout和stderr.如何将异常堆栈跟踪和sysout重定向到每日滚动文件?
我正在寻找一种Python解决方案,它允许我将命令的输出保存在文件中,而不会将其从控制台中隐藏.
仅供参考:我问的是tee(作为Unix命令行实用程序)而不是Python intertools模块中具有相同名称的函数.
tee,在Windows下不可用)stderr而努力stdoutstderr = subprocess.STDOUT不起作用.以下是我发现的一些不完整的解决方案:
图http://blog.i18n.ro/wp-content/uploads/2010/06/Drawing_tee_py.png
#!/usr/bin/python
from __future__ import print_function
import sys, os, time, subprocess, io, threading
cmd = "python -E test_output.py"
from threading import Thread
class StreamThread ( Thread ):
def __init__(self, buffer):
Thread.__init__(self)
self.buffer = buffer
def run ( self ):
while 1:
line = self.buffer.readline()
print(line,end="") …Run Code Online (Sandbox Code Playgroud) 基本上我想做与这个家伙做的相反的事情......呵呵.
我有一个程序告诉我它有多远.
for i in some_list:
#do a bunch of stuff.
print i/len(some_list)*100," percent complete"
Run Code Online (Sandbox Code Playgroud)
因此,如果len(some_list)为50,我会将最后一行打印50次.我想打印一行并不断更新该行.我知道我知道这可能是你整天都会读到的最蹩脚的问题.我只是无法弄清楚我需要在谷歌中找到答案的四个字.
更新!我试过mvds的建议哪个看起来没错.新代码
print percent_complete," \r",
Run Code Online (Sandbox Code Playgroud)
完成百分比只是一个字符串(我现在第一次抽象,我试图成为文字).现在的结果是它运行程序,直到程序结束后才打印ANYTHING,然后在一行且只有一行打印"100%完成".
如果没有回车(但是使用逗号,mvds的一半建议),它将一直打印到最后.然后打印:
0 percent complete 2 percent complete 3 percent complete 4 percent complete
Run Code Online (Sandbox Code Playgroud)
等等.所以现在新的问题是用逗号它不会打印直到程序完成.
使用回车并且没有逗号,它的行为与两者都不完全相同.
我有一个程序,其STDERR输出我想检查和运行grep等.
所以我可以将它重定向到STDOUT并使用grep,但问题是,我不想要原始STDOUT内容.
所以,这个不会做
cmd 2>&1 | grep pattern
Run Code Online (Sandbox Code Playgroud)
因为它会混合原始的STDOUT和STDERR.
而且这个不起作用,因为grep没有读取STDERR输出:
cmd 1>/dev/null | grep pattern
Run Code Online (Sandbox Code Playgroud)
但是,这个也行不通:
cmd 1>/dev/null 2>&1 | grep pattern
Run Code Online (Sandbox Code Playgroud)
因为输出将完全为空,因为所有内容都被写入/dev/null.
但必须有一个简单的方法来做到这一点?
使用打印时有没有办法对齐文字std::cout?我正在使用标签,但是当单词太大时,它们将不再对齐.
Sales Report for September 15, 2010
Artist Title Price Genre Disc Sale Tax Cash
Merle Blue 12.99 Country 4% 12.47 1.01 13.48
Richard Music 8.49 Classical 8% 7.81 0.66 8.47
Paula Shut 8.49 Classical 8% 7.81 0.72 8.49
Run Code Online (Sandbox Code Playgroud) 有没有办法在没有输出缓冲的情况下运行shell命令?
例如,hexdump file | ./my_script只会将缓冲块中的hexdump输入传递给my_script,而不是逐行传递.
实际上我想知道如何使任何命令无缓冲的一般解决方案?
我希望能够在命令行上用简单的PHP脚本显示进度表.而不是看到
Progress: 0%
Progress: 1%
etc...
Run Code Online (Sandbox Code Playgroud)
我只想更改数字,并替换以前的数字,就像git clone那样Resolving deltas: 100% (8522/8522), done..
在搜索这个时,我发现在Perl中回答了同样的问题,这是完美的,但我在PHP中找不到它.可能吗?如果没有,我会诉诸C.
谢谢
更新:如果有人对C++版本感兴趣,它就在这里.
我想知道的区别stdout,并STDOUT_FILENO在Linux中C.
经过一番搜索工作,我得出以下结论.你能帮我复习并纠正错误吗?谢谢
stdout属于C语言的标准I/O流; 其类型为FILE*并在stdio.h中定义
STDOUT_FILENO拥有int类型,定义于unistd.h.它是LINUX系统的文件描述符.在unistd.h,它的解释如下:
Run Code Online (Sandbox Code Playgroud)The following symbolic constants shall be defined for file streams: STDERR_FILENO File number of stderr; 2. STDIN_FILENO File number of stdin; 0. STDOUT_FILENO File number of stdout; 1.
因此,在我看来,STDOUT_FILENO属于系统级调用,并且在某种程度上,就像系统API一样.STDOUT_FILENO可用于描述系统中的任何设备.
在stdout较高的水平(用户级?)定位和实际封装的细节STDOUT_FILENO.stdout有I/O缓冲区.
这是我对他们差异的理解.任何评论或更正都表示赞赏,谢谢.