3
我正在創建應該在Rails內部和外部運行的gem。我不想重新發明輪子,因此我要麼使用默認記錄器,要麼爲用戶創建自己的能力。如何確定Rails中日誌設備的類型
我有彩色的日誌。
創建日誌設備我自己,我可以很容易地檢查它是否是一個tty與否:
@logger = Logger.new(name)
@colorize = (IO === name) && name.tty?
現在終端將獲得彩色輸出,其他的一切不會。這工作得很好。
試想一下,雖然我得到了鋼軌logger
一個實例:
@logger = Kernel.const_defined?(Rails) ? Rails.logger : Logger.new(name)
只有這樣,才能確定它是否是一個長相tty
...嗯太醜陋:
Rails.logger
.instance_variable_get(:@logger)
.instance_variable_get(:@log)
.instance_variable_get(:@logdev)
.instance_variable_get(:@dev)
.tty?
上午我遺漏了什麼?有沒有更好的方法來理解Rails logger是否將輸出吐在終端上?
在自動測試環境等中沒有「用戶」。此外,有時我會將三個不同的記錄儀附加到一個過程中,只有一個需要着色。當然,只要明確要求,我就可以顯示顏色,但這太煩人了。無論如何。問題是關於如何自動檢索此信息。 – mudasobwa 2015-04-07 04:54:44
「用戶」我的意思是將使用你的寶石。也許使用全局導軌設置並不是那麼有趣,比如將所有東西都着色:)但是因此,您將避免陷入只有部分導軌日誌變色的情況,儘管它在設置中顯式禁用。順便說一下,它默認爲true。 – 2015-04-07 11:08:27