13
A
回答
21
如果你想保存为单个字词的数据,你可以了解如何here。在最简单的情况下,你可以做file:write_file(Path, Data)
。如果你的数据更复杂,你可能想用io_lib:fwrite/2
来更可读的格式。例如:
Data = [1,2,3,{car, "honda"}],
file:write_file("/tmp/foo", io_lib:fwrite("~p.\n", [Data])).
3
tee命令可以捕获外壳输出,并将其保存到一个文件:
$ erl | tee output.txt
Eshell V5.8 (abort with ^G)
1> A = 5.
5
2> 5 + A.
10
3> ^Ca
$ cat output.txt
Eshell V5.8 (abort with ^G)
1> 5
2> 10
3>
3
有很多可能性。这是我想到的第一个。
在Erlang中,每个进程都是组的一部分。对于每个组,一个过程 - 名为组长获取来自组队的所有输出。 shell进程是组init的一部分。所以,你可以做的是change the group leader的外壳工艺做:
{ok, Log} = file:open("log", [write]),
erlang:group_leader(Log, self()).
您可能需要创建作为组长谁管理更聪明的方式输出专用的过程。例如,它可能会在一段时间后或文件达到一定大小时打包文件。
这种方法的问题是,你必须在你启动shell的任何时候执行这些行。
ERL -s shell_log
其中shell_log是:
-module(shell_log).
-export([start/0]).
start() ->
{ok, Log} = file:open("log", [write]),
erlang:group_leader(Log, self()).
将无法正常工作,因为它仍然为时过早(INIT仍然是通过使用-s标志做如,如init:get_status()
所报道)。
以同样的方式,通过在您的HOME目录中使用.erlang
文件(每次启动shell时会自动执行这些文件)执行此操作也会因类似原因(init仍处于{starting, applications_loaded}
状态)而失败。
不知道哪个是避免这个问题的最好方法。我会考虑一下。
最后,这个问题似乎是this thread的重复。
相关问题
- 1. 将输出写入文本文件
- 2. 将输出写入文本文件
- 3. 将Nokogiri输出写入文本文件
- 4. R5RS Scheme输入输出:如何将文本写入/附加到输出文件?
- 5. 如何将“java -version”的输出写入文本文件?
- 6. 如何将compressjs输出写入文件
- 7. PYTHON如何将str输入文本写入文本文件
- 8. 将输出写入文件
- 9. 如何将cplex输出写入文本文件
- 10. python;如何将输出写入文本文件
- 11. 如何将curl post命令输出写入文本文件
- 12. Java:如何将格式化输出写入纯文本文件
- 13. Erlang输出到文本文件
- 14. 如何将批量输出写入我的文本光标?
- 15. 如何将C#应用程序的文本输出写入文本文件
- 16. 数据写入文本输出文件
- 17. 如何将python脚本的输出写入html文件
- 18. 如何将VB脚本的输出写入文件?
- 19. 如何将我的xml输出写入文件
- 20. 如何将一组python脚本的输出写入一个文本文件?
- 21. 如何将输入输出到R中的文本文件?
- 22. 如何使用python将多个输入写入文本文件?
- 23. 如何将脚本输出写入文件和命令行?
- 24. 如何将字节表单输入写入输出文件?
- 25. 如何将mmap输入内存写入O_DIRECT输出文件?
- 26. 无法将输出写入cpp程序中的文本文件
- 27. 将putStrLn的输出写入文本文件
- 28. 将逻辑回归输出写入Stata中的文本文件
- 29. 将fts(3)的输出写入文件
- 30. 将输出写入Graphchi中的文件
[this](http://stackoverflow.com/questions/3718101/logging-libraries-for-erlang-otp/3720373#3720373)? – nmichaels 2011-03-07 20:08:13