为什么来自标准库的Ruby记录器不支持动态日志设备切换?那不是有任何公共API吗?我可以切换日志级别,但不能切换日志设备。例如:
logger = Logger.new(STDOUT)
logger.logdev = LogDevice.new('/tmp/any.log')
#=> NoMethodError: undefined method `logdev=' for #<Logger>
我认为它与某些线程安全设置有关,可能是通过日志设备进行互斥或某些地下文件锁定。所以我想了解细节和最初的意图。
在serverengine gem,ServerEngine::DaemonLogger
子类Logger
中,并使用#logdev=
方法添加所需的行为。