我正在使用守护进程gem在Ruby中创建守护进程。我想将守护进程的输出添加到日志文件中。我想知道什么是最简单的方式将puts
从控制台重定向到日志文件。将“puts”命令输出重定向到日志文件
回答
我应该推荐使用Ruby记录仪,它比放好,你可以有,你可以打开/关闭多个日志级别:调试,警告信息,错误等
logger = Logger.new(STDOUT)
logger = Logger.new("/var/log/my-daemon.log")
我用runit包管理红宝石服务,它已经svlogd比意志重定向服务输出到日志文件,这里是运行脚本记录器进程:
#!/bin/sh
set -e
LOG=/var/log/my-daemon
test -d "$LOG" || mkdir -p -m2750 "$LOG" && chown nobody:adm "$LOG"
exec chpst -unobody svlogd -tt "$LOG"
这并没有真正回答这个问题。如果你无法控制谁正在执行_puts_,并且想要捕获通常写入STDOUT的东西,而是将它们写入文件? – silvamerica 2011-04-25 19:17:12
尝试
$stdout = File.new('/tmp/output', 'w')
恢复:
$stdout = STDOUT
没有`$ stdout.sync = true`,它不会工作。 – 2012-02-10 16:02:51
如果您需要同时捕获STDERR和STDOUT,不希望诉诸记录,以下是改编自this post一个简单的解决方案:
$stdout.reopen("my.log", "w")
$stdout.sync = true
$stderr.reopen($stdout)
谢谢,这工作很好,与[这个]结合(http://stackoverflow.com/questions/1993071/how-to-controller-start-kill-a-background-process-server-app-in-ruby) ! – TheDeadSerious 2011-02-05 17:01:44
或者您可以重新定义puts
命令?只有在一个单一的文件/类可能工作
def puts(message)
#write message to file
end
- 1. 将命令行日志重定向到文件时出现`pause`命令问题
- 2. 如何将时间命令的输出重定向到日志文件?
- 3. 将git命令的错误重定向到日志文件
- 4. 将git包创建输出重定向到日志文件
- 5. 将预期的输出重定向到日志文件预期
- 6. 将python输出重定向到日志文件
- 7. 将多个命令的输出重定向到一个文件
- 8. 将文件的输出重定向到写入命令
- 9. perl系统命令重定向到日志文件
- 10. 将重命名项目事件输出到日志文件
- 11. 命令输出重定向
- 12. 如何重定向'&'命令的日志?
- 13. 重定向不同的日志框架输出到文件
- 14. 重定向SFTP命令日志在外壳脚本文件
- 15. Windows cmd重定向子命令输出到文件
- 16. 不能重定向命令输出到文件(后缀状态)
- 17. DOS命令重定向到文件截断输出
- 18. Ruby将输出重定向到文件
- 19. 将ttisql输出重定向到文件
- 20. 从命令行可执行文件输入/输出重定向到文件
- 21. 将命令的输出重定向到Haxe中的文本文件
- 22. 如何将Win32 :: Process命令的输出重定向到文本文件?
- 23. 重定向CMD输出,而不日志
- 24. 使用alembic.config.main重定向日志输出
- 25. sqoop将期望的输出重定向到日志文件预计
- 26. gdb:如何将共享库的日志文件重定向到gdb输出
- 27. 时间命令的输出保存到一个日志文件
- 28. 重定向输出到输出文件
- 29. 如何将npgsql日志输出重定向到log4net记录器?
- 30. 将控制台日志输出重定向到flask-socketio
使用此`记录器|| = Logger.new( “| T恤#{} settings.root /log/migration_script_logger.log”, “月”)`,这将做两个 – vs4vijay 2016-03-31 12:12:32