복붙노트

[RUBY-ON-RAILS] 어떻게 레일 3.0.x 버전으로 Log4r를 구성?

RUBY-ON-RAILS

어떻게 레일 3.0.x 버전으로 Log4r를 구성?

이 기사에 따라 레일 3.0.4로 구성 log4r을 시도 : http://www.dansketcher.com/2007/06/16/integrating-log4r-and-ruby-on-rails/

/Users/toto/.rvm/gems/ruby-1.9.2-p0/gems/log4r-1.1.9/lib/log4r/yamlconfigurator.rb:166:in `sub!': can't convert Pathname into String (TypeError)
    from /Users/toto/.rvm/gems/ruby-1.9.2-p0/gems/log4r-1.1.9/lib/log4r/yamlconfigurator.rb:166:in `block in paramsub'
    from /Users/toto/.rvm/gems/ruby-1.9.2-p0/gems/log4r-1.1.9/lib/log4r/yamlconfigurator.rb:165:in `each'
    from /Users/toto/.rvm/gems/ruby-1.9.2-p0/gems/log4r-1.1.9/lib/log4r/yamlconfigurator.rb:165:in `paramsub'
    from /Users/toto/.rvm/gems/ruby-1.9.2-p0/gems/log4r-1.1.9/lib/log4r/yamlconfigurator.rb:156:in `block in decode_hash_params'

나는 레일 3 통합 봤하지만, 작업 솔루션을 발견하지 않았습니다. 런타임에 작동 코드 A를 YAML 파일을 사용하여 로그 구성을 허용 조각 및 초기화에 누군가 포인트 나를 수 있습니까?

그냥 참고로, 나는 / 초기화가 폴더 설정 및 config 디렉토리에있는 log4r.yml에서 샘플 logger.rb를 배치했다.

감사

해결법

  1. ==============================

    1.헤헤 ... Log4r의 생각은 내 자바 프로그래밍 인생에서 내가 가장 좋아하는 로거 유명한 "Log4j의"에서 비롯됩니다. 그러나 log4r의 문서는 정말 가난이며, 초보자 정말 어렵다. 내 솔루션을 보여 드리죠 :

    헤헤 ... Log4r의 생각은 내 자바 프로그래밍 인생에서 내가 가장 좋아하는 로거 유명한 "Log4j의"에서 비롯됩니다. 그러나 log4r의 문서는 정말 가난이며, 초보자 정말 어렵다. 내 솔루션을 보여 드리죠 :

    1 단계. log4r 설정 파일을 만듭니다 (파일 이름 : 설정 / log4r.yml)

    log4r_config:
      # define all loggers ...
      loggers:
        - name      : production
          level     : WARN
          trace     : 'false'
          outputters :
          - datefile
        - name      : development
          level     : DEBUG
          trace     : 'true'
          outputters :
          - datefile
    
      # define all outputters (incl. formatters)
      outputters:
      - type: DateFileOutputter
        name: datefile
        dirname: "log"
        # notice the file extension is needed! 
        # if you want the file is named by the process, just comment it,
        # then it will automatically get the same name with its process,
        # e.g.  rails_2017-05-03.log
        filename: "my_app.log" 
        formatter:
          date_pattern: '%H:%M:%S'
          pattern     : '%d %l: %m '
          type        : PatternFormatter
    

    2 단계. 수정 설정 / application.rb

    require 'rails/all'
    # add these line for log4r
    require 'log4r'
    require 'log4r/yamlconfigurator'
    require 'log4r/outputter/datefileoutputter'
    include Log4r
    
    Bundler.require(:default, Rails.env) if defined?(Bundler)
    module Zurich
      class Application < Rails::Application
        #...
        # assign log4r's logger as rails' logger.
        log4r_config= YAML.load_file(File.join(File.dirname(__FILE__),"log4r.yml"))
        YamlConfigurator.decode_yaml( log4r_config['log4r_config'] )
        config.logger = Log4r::Logger[Rails.env]
      end
    end
    

    STEP3. 당신의 Gemfile에이 줄을 추가합니다.

    # which is the latest version and support "datefileoutputter"
    gem 'log4r', '1.1.9'  
    

    당신은 4 + 레일을 사용하는 경우 (여전히 STEP4가이 파일을 추가하려면 설정 / 초기화 폴더

    # config/initializers/log4r_patch_for_rails4.rb
    class Log4r::Logger
      def formatter()
      end
    end    
    

    )

    끝났다. 이제 레일 응용 프로그램 폴더에 "CD는"log4r를 설치하려면 "번들"를 실행 한 후 "레일의" 이 같은 폴더를 "로그 /"에서 로그 파일을 찾을 수 있습니다 :

    May  9 17:05 rails_2011-05-09.log
    May 10 13:42 rails_2011-05-10.log
    

    및 로그 내용은 (내가 가장 좋아하는 형식)입니다 :

    $ tail log/rails_2011-05-10.log
    Started GET "/????_settings/19/edit" for 127.0.0.1 at ...
    13:42:11 INFO:   Processing by ????SettingsController ...
    13:42:11 INFO:   Parameters: {"id"=>"19"}
    13:42:12 DEBUG:   ????Setting Load (0.0ms)  SELECT "d ...
    13:42:12 INFO: Completed 200 OK in 750ms
    

    내 환경 :

    모든 질문은 ~ 알려 주시기 바랍니다 :-)

    https://stackoverflow.com/a/20154414/445908 : 참조

  2. ==============================

    2.(환경 dependend 로그 파일에 기록) 행동 나는 다음 log4r.yml를 사용 로깅 모방 레일 :

    (환경 dependend 로그 파일에 기록) 행동 나는 다음 log4r.yml를 사용 로깅 모방 레일 :

    log4r_config:
      # define all loggers ...
      loggers:
      - name      : production
        level     : WARN
        trace     : 'false'
        outputters :
        - datefile_production
      - name      : development
        level     : DEBUG
        trace     : 'true'
        outputters :
        - datefile_development
      - name      : test
        level     : DEBUG
        trace     : 'true'
        outputters :
        - datefile_test
    
      # define all outputters (incl. formatters)
      outputters:
      - type: DateFileOutputter
        name: datefile_production
        dirname: "log"
        filename: "production.log"
        formatter:
          date_pattern: '%H:%M:%S'
          pattern     : '%d %l: %m '
          type        : PatternFormatter
      - type: DateFileOutputter
        name: datefile_development
        dirname: "log"
        filename: "development.log"
        formatter:
          date_pattern: '%H:%M:%S'
          pattern     : '%d %l: %m '
          type        : PatternFormatter
      - type: DateFileOutputter
        name: datefile_test
        dirname: "log"
        filename: "test.log"
        formatter:
          date_pattern: '%H:%M:%S'
          pattern     : '%d %l: %m '
          type        : PatternFormatter
    
  3. ==============================

    3.나는 그것이 표준 레일 로거를 대체하는 방식으로 log4r을 설정하는 방법에 대한 자세한 블로그 게시물을 썼다. 또한 나뿐만 아니라 Mongoid, 액티브 및 예외 (스택 트레이스를 incluing) Log4r을 사용하여 로그온하는 방법 등 여러 로거, 사용 로그 수준을 사용하는 방법에 대한 세부 사항으로 갔다.

    나는 그것이 표준 레일 로거를 대체하는 방식으로 log4r을 설정하는 방법에 대한 자세한 블로그 게시물을 썼다. 또한 나뿐만 아니라 Mongoid, 액티브 및 예외 (스택 트레이스를 incluing) Log4r을 사용하여 로그온하는 방법 등 여러 로거, 사용 로그 수준을 사용하는 방법에 대한 세부 사항으로 갔다.

    Log4r에 관심이있는 사람들이이 보석을 확인 할 수 있습니다, 그래서 "로깅"라는 또 다른 분명히 더 성숙 보석은, 기사에 해당하는 HackerNews 스레드에 대한 의견에 제안했다.

  4. from https://stackoverflow.com/questions/5664136/how-to-configure-log4r-with-rails-3-0-x by cc-by-sa and MIT license