How to log something in Rails in an independent log file?

前端 未结 9 1299
栀梦
栀梦 2020-11-30 17:12

In rails I want to log some information in a different log file and not the standard development.log or production.log. I want to do this logging from a model class.

9条回答
  •  无人及你
    2020-11-30 17:25

    class Article < ActiveRecord::Base  
    
          LOGFILE = File.join(RAILS_ROOT, '/log/', "article_#{RAILS_ENV}.log")  
    
          def validate  
            log "was validated!"  
          end   
    
          def log(*args)  
           args.size == 1 ? (message = args; severity = :info) : (severity, message = args)  
           Article.logger severity, "Article##{self.id}: #{message}"  
         end  
    
         def self.logger(severity = nil, message = nil)  
           @article_logger ||= Article.open_log  
           if !severity.nil? && !message.nil? && @article_logger.respond_to?(severity)  
             @article_logger.send severity, "[#{Time.now.to_s(:db)}] [#{severity.to_s.capitalize}] #{message}\n"  
           end  
           message or @article_logger  
         end  
    
         def self.open_log  
           ActiveSupport::BufferedLogger.new(LOGFILE)  
         end  
    
       end  
    

提交回复
热议问题