标签: stdout

如何在运行rspec时将Rails.logger打印到console/stdout?

与标题相同:如何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.loggerlog/test.log了.

console logging rspec stdout ruby-on-rails

71
推荐指数
5
解决办法
9万
查看次数

文件描述符如何工作?

有人能告诉我为什么这不起作用?我正在玩文件描述符,但感觉有点迷失.

#!/bin/bash
echo "This"
echo "is" >&2
echo "a" >&3
echo "test." >&4
Run Code Online (Sandbox Code Playgroud)

前三行运行正常,但最后两行错误.为什么?

bash shell stdin stdout file-descriptor

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

log4j将stdout重定向到DailyRollingFileAppender

我有一个使用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重定向到每日滚动文件?

java redirect log4j stdout file

64
推荐指数
6
解决办法
8万
查看次数

使用子进程时如何在Python中复制tee行为?

我正在寻找一种Python解决方案,它允许我将命令的输出保存在文件中,而不会将其从控制台中隐藏.

仅供参考:我问的是tee(作为Unix命令行实用程序)而不是Python intertools模块中具有相同名称的函数.

细节

  • Python解决方案(不调用tee,在Windows下不可用)
  • 我不需要为被调用进程的stdin提供任何输入
  • 我无法控制被叫程序.我所知道的是它会向stdout和stderr输出一些内容并返回退出代码.
  • 在调用外部程序时工作(子进程)
  • 为两者stderr而努力stdout
  • 能够区分stdout和stderr,因为我可能只想显示一个控制台,或者我可以尝试使用不同的颜色输出stderr - 这意味着stderr = subprocess.STDOUT不起作用.
  • 实时输出(渐进式) - 该过程可以运行很长时间,我无法等待它完成.
  • Python 3兼容代码(重要)

参考

以下是我发现的一些不完整的解决方案:

图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)

python subprocess stdout stderr tee

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

打印到同一行,而不是python中的新行

基本上我想做与这个家伙做的相反的事情......呵呵.

Python脚本:每次打印新行到shell而不是更新现有行

我有一个程序告诉我它有多远.

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)

等等.所以现在新的问题是用逗号它不会打印直到程序完成.

使用回车并且没有逗号,它的行为与两者都不完全相同.

python stdout

63
推荐指数
7
解决办法
9万
查看次数

如何将STDERR重定向到STDOUT,但忽略原始STDOUT?

我有一个程序,其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.

但必须有一个简单的方法来做到这一点?

bash redirect stdout

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

打印cout <<时的C++对齐方式

使用打印时有没有办法对齐文字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)

c++ cout stdout text-alignment

60
推荐指数
6
解决办法
10万
查看次数

如何使任何shell命令的输出无缓冲?

有没有办法在没有输出缓冲的情况下运行shell命令?

例如,hexdump file | ./my_script只会将缓冲块中的hexdump输入传递给my_script,而不是逐行传递.

实际上我想知道如何使任何命令无缓冲的一般解决方案?

stdout buffering

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

更新命令行输出,即进度

我希望能够在命令行上用简单的PHP脚本显示进度表.而不是看到

Progress: 0%
Progress: 1%
etc...
Run Code Online (Sandbox Code Playgroud)

我只想更改数字,并替换以前的数字,就像git clone那样Resolving deltas: 100% (8522/8522), done..

在搜索这个时,我发现在Perl中回答同样的问题,这是完美的,但我在PHP中找不到它.可能吗?如果没有,我会诉诸C.

谢谢

更新:如果有人对C++版本感兴趣,它就在这里.

php command-line stdout autoflush

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

LINUX C中stdout和STDOUT_FILENO之间的区别

我想知道的区别stdout,并STDOUT_FILENO在Linux中C.

经过一番搜索工作,我得出以下结论.你能帮我复习并纠正错误吗?谢谢

  • stdout属于C语言的标准I/O流; 其类型为FILE*并在stdio.h中定义

  • STDOUT_FILENO拥有int类型,定义于unistd.h.它是LINUX系统的文件描述符.在unistd.h,它的解释如下:

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.
Run Code Online (Sandbox Code Playgroud)

因此,在我看来,STDOUT_FILENO属于系统级调用,并且在某种程度上,就像系统API一样.STDOUT_FILENO可用于描述系统中的任何设备.

stdout较高的水平(用户级?)定位和实际封装的细节STDOUT_FILENO.stdout有I/O缓冲区.

这是我对他们差异的理解.任何评论或更正都表示赞赏,谢谢.

c linux stdout

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