rubyonrails rails print logs logger guide debugger ruby-on-rails ruby-on-rails-3 log4r

ruby-on-rails - rails - ruby print in console



¿Cómo configurar Log4r con Rails 3.0.x? (3)

¿Alguien puede indicarme un fragmento de código de trabajo que permita la configuración del registro mediante un archivo YAML y la inicialización en tiempo de ejecución?

Escribí un blog detallado sobre cómo configurar log4r de manera que reemplace al registrador de rieles estándar. Además, expliqué en detalle cómo usar múltiples registradores, usar niveles de registro y cómo registrar Mongoid, ActiveRecord y Exceptions (incluidas las trazas de pila) utilizando Log4r.

Otra gema aparentemente más madura llamada " Logging " se sugirió en los comentarios en el hilo de HackerNews correspondiente al artículo, por lo que las personas interesadas en Log4r también deberían consultar esta gema.

Intenté configurar log4r con Rails 3.0.4 basado en este artículo: 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''

He buscado en Google para una integración de Rails 3, pero no he encontrado una solución que funcione. ¿Alguien puede indicarme un fragmento de código de trabajo que permita la configuración del registro mediante un archivo YAML y la inicialización en tiempo de ejecución?

Solo como referencia, puse el logger.rb de muestra en la carpeta config / initializers y el log4r.yml en el directorio config.

Gracias


Jeje ... La idea de Log4r proviene de la famosa "Log4j", que es mi registrador favorito en mi vida de programación en Java. Sin embargo, el documento de log4r es realmente malo y muy difícil para los novatos. Déjame mostrarte mi solución:

Paso 1. cree el archivo de configuración log4r: (nombre de archivo: config / 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

paso 2. modificar config / 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

paso 3. añade esta línea a tu Gemfile.

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

(Si está utilizando Rails 4+, todavía hay un paso 4: agregue este archivo a la carpeta config / initializers

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

)

Está hecho. Ahora "cd" en la carpeta de la aplicación Rails, ejecute "bundle" para instalar log4r, luego "rails s", encontrará los archivos de registro en la carpeta "/ log" de esta manera:

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

y el contenido del registro es (mi formato favorito):

$ 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

Mi entorno:

  1. OS: cygwin corriendo en XP
  2. ruby 1.8.7 (2011-02-18 patchlevel 334) [i386-mingw32]
  3. rieles: 3.0.5
  4. gema: 1.6.0

Cualquier pregunta por favor hágamelo saber ~ :-)

consulte: https://.com/a/20154414/445908


Para imitar el comportamiento de registro de rieles (inicio de sesión en los archivos de registro dependientes del entorno), uso el siguiente 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