问题:我想从编码为LF文件提供CRLF
我有一个基于apache2的httpd基于linux的networking服务器configuration为提供(大)日志文件( *.log )由基于Linux的模拟器生成。
这些日志文件具有Unix风格的LF结尾,而不是Windows风格的CRLF 。 CRLF也被certificate是http协议中文本文件的标准。
当我在Windows中使用浏览器查看它们时,它们将被加载到Notepad.exe中,并且所有文本都在同一行上(不正确) 除非我将服务器上的日志从*.log重命名为*.txt 。
它似乎是微软Windows可能特别处理*.txt ,并转换结束,因为他们到达。
鉴于这些线索,如何更改设置,以便客户端用户正确查看文件,而不pipe他们的平台/浏览器如何。
更多的问题细节:为什么我不能做明显的事情
分析日志,我发现.txt作为MIMEtypestext/plain和.log作为text/x-log ,但使用SetType将.log切换到text/plain并不能解决问题。
在生产系统中,我不会轻易地将文件更改为以.txt结尾。
日志太多,我想要转换使用(例如unix2dos ),并保存另一个副本大。 此外,这将迫使我pipe理转换文件的额外caching,这将需要失效,清理等,或更改原始文件,这可能会打破其他系统,使用它们。
LF到CRLF到达? CRLFreplaceLF ,因为它提供了它? 我曾经尝试过
我看过捆绑的Apache mod_mime模块及其指令AddType和AddCharset但是这些并不能解决问题,甚至声称。
Apache文档在行结束的问题上很安静。
texttypes的MIME文档说明内容必须是CRLF格式 。
字符集编码标准也没有考虑换行符。
记事本中的(严重的恕我直言)限制似乎要解决很多麻烦。 是否有可能在系统上安装更智能的文本编辑器,例如Notepad ++?
我已经解决的(不完美的)解决scheme是使用Apache的mod_ext_filter :
ExtFilterDefine logwin mode=output cmd=/usr/bin/unix2dos intype=text/x-log AddOutputFilter logwin .log # Note that apache2 defines .log as having mime-type text/x-log by default.
实质上,这就是说,对于任何以.log结尾的文件,它应该在传递给客户端之前通过一个行结束的转换器。
对于重负载机器来说,这不是一个好的解决scheme,因为fork- unix2dos比使用Apache在内部处理要慢。 它也需要转换为每个文件的读取,这是低效的。
不幸的是,Apache基金会没有提供一个内置的modfilter,我没有时间写/维护一个。
但是,我不希望这台机器的高负荷,所以通过工程测量来衡量,这是一个很好的解决scheme。
CRLF ,符合mime规范的文本/纯文本