Jeje ... La idea de Log4r proviene de la famosa "Log4J", que es mi registrador favorito en mi vida de programación Java. Sin embargo, el documento de log4r es realmente pobre, y es realmente difícil para los novatos. Permítanme mostrar mi solución:
Paso1. crear 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
step3. agrega esta línea a tu Gemfile.
# which is the latest version and support "datefileoutputter"
gem 'log4r', '1.1.9'
(si está utilizando rieles 4+, todavía es Paso 4: añadir este archivo a la carpeta config/inicializadores
# config/initializers/log4r_patch_for_rails4.rb
class Log4r::Logger
def formatter()
end
end
)
Está hecho. Ahora "cd" en su Rieles carpeta de la aplicación, ejecute "paquete" para instalar log4r, luego "carriles s", encontrará los archivos de registro en "/ log" carpeta como esta:
May 9 17:05 rails_2011-05-09.log
May 10 13:42 rails_2011-05-10.log
y el registro contenido 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:
- OS: Funcionamiento cygwin en XP
- rubí 1.8.7 (2011-02-18 Patchlevel 334) [i386-mingw32]
- rieles: 3.0.5
- joya: 1.6.0
Cualquier pregunta por favor hágamelo saber ~ :-)
se refieren a: https://stackoverflow.com/a/20154414/445908
¿Por qué querrías hacer esto? – jvatic
Para permitir el registro de aplicaciones personalizable con marcas de tiempo, rotación del archivo de registro basado en el tiempo, separación del registro del nivel de contexto. Estas son algunas de mis características deseadas. – user553620
Resolví la excepción: en Rails 3, el valor de Rails.root no es un objeto de cadena. Al cambiar la definición de variable a Rails.root.to_s, se corrigió el error anterior. Espero que esto ayude a alguien. – user553620