Ruby日志记录在时间关键型多线程应用程序中
我必须记录在许多线程中运行的应用程序的活动。最好的方法是什么?可能不可能所有线程都登录到一个文件中,因为它们会相互锁定?那么,最好为每个线程使用单独的文件吗 我在一个线程目前调用的方法中使用它:Ruby日志记录在时间关键型多线程应用程序中,ruby,multithreading,file,logging,time-critical,Ruby,Multithreading,File,Logging,Time Critical,我必须记录在许多线程中运行的应用程序的活动。最好的方法是什么?可能不可能所有线程都登录到一个文件中,因为它们会相互锁定?那么,最好为每个线程使用单独的文件吗 我在一个线程目前调用的方法中使用它: f=File.open(...) f.puts "log message" f.close 所有线程都在调用此方法。我将把线程号附加到文件名中,这样每个线程都会创建自己的文件。当线程调用此方法并向其提供新的日志信息时,将调用此方法。然后方法打开文件,写入信息并再次关闭它。
f=File.open(...)
f.puts "log message"
f.close
所有线程都在调用此方法。我将把线程号附加到文件名中,这样每个线程都会创建自己的文件。当线程调用此方法并向其提供新的日志信息时,将调用此方法。然后方法打开文件,写入信息并再次关闭它。然而,在时间紧迫的应用程序中,打开和关闭文件是否很耗时?或者这不值得关注吗?Ruby标准记录器似乎是。是否有理由寻找不同的解决方案?我可以使用它,但现在不要使用它,因为我不需要Logger拥有的所有功能,所以我的方法看起来更轻量级。在我的例子中,我认为当在同一个文件中写入时,线程正在互相等待。若记录器将写入同一个文件,那个么线程不会彼此等待吗?我对这个多线程的东西还很陌生,Ruby标准记录器似乎是。是否有理由寻找不同的解决方案?我可以使用它,但现在不要使用它,因为我不需要Logger拥有的所有功能,所以我的方法看起来更轻量级。在我的例子中,我认为当在同一个文件中写入时,线程正在互相等待。若记录器将写入同一个文件,那个么线程不会彼此等待吗?我对这个多线程的东西很陌生。