यह रूबी कोड लॉग फ़ाइल में लिखने में विफल क्यों होता है?

एक बार स्क्रिप्ट को डिमनीकृत कर दिया जाता है तो लॉगर अब फ़ाइल को नहीं लिख सकता है। तो मैं लॉग कैसे शुरू करूं?

require 'rubygems'
require 'daemons'
require 'logging'

def create_new_logger
    logger = Logging.logger['trend-analyzer']
    logger.add_appenders(
        Logging.appenders.rolling_file('./logs/trend-analyzer.log'),
        Logging.appenders.stdout
    )
    logger.level = :debug
    return logger
end

logger = create_new_logger

#this log message gets written to the log file
logger.debug Time.new 

Daemons.run_proc('ForestPress', :log_dir => '.logs', :backtrace => true) do
    running_as_daemon = true

    #this log message does NOT get written to the log file
    logger.debug Time.new

    loop do
        #this log message does NOT get written to the log file
        logger.info Time.new    
        sleep 5 
    end
end

संपादित करें

मैं वर्तमान पथ परिवर्तनों को देखता हूं जहां से मैंने स्क्रिप्ट को / पर निष्पादित किया था। क्या मैं संदेश लॉग इन नहीं कर सकता?


2 संपादित करें

अब मैं एक डिमन बनने से पहले मूल पथ को सहेजता हूं और फिर मूल पथ के पथ को सेट करने के लिए Dir.chdir का उपयोग करता हूं। मैं फिर फ़ाइल को सीधे खोल सकता हूं और इसे लिख सकता हूं। हालांकि लॉगिंग मणि अभी भी इसे लिख नहीं सकता है।

3
जोड़ा संपादित
विचारों: 1

1 उत्तर

यहां बताया गया है कि यह कैसे काम करना शुरू कर दिया

require 'rubygems'
require 'daemons'
require 'logging'

def create_new_logger
    logger = Logging.logger['trend-analyzer']
    logger.add_appenders(
        Logging.appenders.rolling_file('./logs/trend-analyzer.log'),
        Logging.appenders.stdout
    )
    logger.level = :debug
    return logger
end

current_dir = Dir.pwd

Daemons.run_proc('ForestPress', :log_dir => '.logs', :backtrace => true) do
    Dir.chdir(current_dir)  

    logger = create_new_logger

    loop do
        puts Dir.pwd
        logger.debug Time.new   
        sleep 5 
    end
end
0
जोड़ा