| 10 июня 2008, 18:54 | Расширенное логированеи с помощью log4r |
|---|---|
Ruslan Voloshin Живет: Odessa,UKR Сообщений: 2441 Рейтинг: 616.0 Рег: 13 марта 2007 Его блог |
|
[root@bublik ~]# gem install --remote log4r
complete
Successfully installed log4r-1.0.5
1 gem installed
Installing ri documentation for log4r-1.0.5...
Installing RDoc documentation for log4r-1.0.5...
Пимер подключения
ДОбавляем следующие строки в environment.rb
#########################################
require "log4r"
require "log4r/configurator"
include Log4r
Log4r::Configurator.custom_levels("Info","Error","Access","Activity","Debug")
class MyFormatter < Log4r::Formatter
def format(event)
buff = "The level is #{event.level} and has "
buff += "name '#{Log4r::LNAMES[event.level]}'\n"
buff += "The logger is '#{event.name}' "
buff += "and the data type is #{event.data.class}\n"
buff += "Let's inspect the data:\n"
buff += event.data.inspect + "\n"
# buff += "We were called at #{event.tracer[0]}\n\n"
end
end
Log4r::FileOutputter.new('my_log',
:filename=>"#{RAILS_ROOT}/log/mylog.log",
:trunc=>false,
:formatter=>MyFormatter)
devel = Log4r::Logger.new("mylog")
#devel.trace = true
devel.add('my_log')
production = Log4r::Logger.new("prod")
production.add('my_log')
devel.info("User logged in")
devel.access("User logged in")
devel.error("User logged in")
devel.debug("User logged in")
production.info("User logged in")
production.access("User logged in")
production.error("User logged in")
production.debug("User logged in")
Вот пример того что мы получим
http://log4r.sourceforge.net/
http://www.pigstye.net/articles/2007/02/01/log4r-and-rails
http://www.martyandrews.net/blog/2007/09/logging_in_ruby_on_rails.html
http://wiki.rubyonrails.org/rails/pages/HowtoConfigureLogging
|
|
| Операции с WM | SEO консультации | |
| log4r |
| 09 июня 2008, 02:18 | RE: Расширенное логированеи с помощью log4r |
|---|---|
Ruslan Voloshin Живет: Odessa,UKR Сообщений: 2441 Рейтинг: 616.0 Рег: 13 марта 2007 Его блог |
|
require "log4r"
include Log4r
Добавляем в development.rb
formatter = Log4r::PatternFormatter.new(:pattern => "[%l][%c] (%d) | %M |")
Log4r::StderrOutputter.new('console', :formatter => formatter)
Log4r::FileOutputter.new('devel_log',
:filename=>"#{RAILS_ROOT}/log/development.log",
:trunc=>false,
:formatter => formatter)
Log4r::Logger.new('App').add('console')
Log4r::Logger.new('App').add('devel_log')
RAILS_DEFAULT_LOGGER = Log4r::Logger.new('App::Rails')
В результате получим красивый лог
[DEBUG][Rails] (2008-03-04 16:13:35) | SQL (0.001283) SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = 'products'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
|
|
|
| Операции с WM | SEO консультации | |
| configure log4r |
| 10 июня 2008, 18:30 | No such file to load -- log4r |
|---|---|
Ruslan Voloshin Живет: Odessa,UKR Сообщений: 2441 Рейтинг: 616.0 Рег: 13 марта 2007 Его блог |
|
wr@bublik trunk]$ ruby test/unit/trustconnect_log_test.rb
/home/wr/****/trunk/config/environment.rb:6:in `require': no such file to load -- log4r (LoadError)
from /home/wr/comodo/comodo_sasp/trunk/config/environment.rb:6
from ./test/unit/../test_helper.rb:2:in `require'
from ./test/unit/../test_helper.rb:2
from test/unit/trustconnect_log_test.rb:1:in `require'
from test/unit/trustconnect_log_test.rb:1
Оказывается для запуска тектов надо добавить еще загрузку джемов
/environment.rb
require 'rubygems'
require "log4r"
include Log4r
|
|
| Операции с WM | SEO консультации | |
| require log4r gem log4r |
| 10 июня 2008, 13:56 | RE: Расширенное логированеи с помощью log4r |
|---|---|
Ruslan Voloshin Живет: Odessa,UKR Сообщений: 2441 Рейтинг: 616.0 Рег: 13 марта 2007 Его блог |
|
require File.join(File.dirname(__FILE__), 'boot')
require File.expand_path(File.dirname(__FILE__) + "/logger")
файлы которые надо добавить приатачены |
|
| Операции с WM | SEO консультации | |
| Присоединенные: log4r_rails.zip |
| 10 июня 2008, 06:42 | Rails loggger formatter |
|---|---|
Ruslan Voloshin Живет: Odessa,UKR Сообщений: 2441 Рейтинг: 616.0 Рег: 13 марта 2007 Его блог |
|
#app/lib/logger_core_ext.rb'
######################################
#Для использования добавляем в app/config/enviromnent.rb следующие строки
#require 'logger_core_ext'
#RAILS_DEFAULT_LOGGER.formatter = Logger::CustomFormatter.new
######################################
class Logger
#revert rails logger hack
alias format_message old_format_message
class CustomFormatter < Formatter
def call(severity, time, progname, msg)
"[%s|#%5d|%s] %s| %s\n" % [severity[0..3], $$, time.to_s(:db), progname, msg2str(msg)]
end
end
end
#app/config/enviromnent.rb
require 'logger_core_ext'
RAILS_DEFAULT_LOGGER.formatter = Logger::CustomFormatter.new
Добавим для тестового просмотра вида нашего лога в application.rb
class ApplicationController < ActionController::Base
before_filter :showlog
def showlog
logger.debug('debug from log'){ "Received connection from" }
logger.info('info from log')
logger.info("MainApp"){ "Received connection from" }
logger.warn('warn from log')
logger.error('error from log')
logger.fatal('fatal from log')
end
end
Как результат в наших логах прекрасные и понятные записи.
Processing MessagesController#show (for 127.0.0.1 at 2008-03-11 11:35:48) [GET]
[INFO|# 5584|2008-03-11 11:35:48] | Session ID: 7e022c9982f2d317480f10f104c92407
[INFO|# 5584|2008-03-11 11:35:48] | Parameters: {"action"=>"show", "id"=>"14", "controller"=>"messages"}
[DEBU|# 5584|2008-03-11 11:35:48] | [Set SUBDOMAIN] -
[DEBU|# 5584|2008-03-11 11:35:48] debug from log| Received connection from
[INFO|# 5584|2008-03-11 11:35:48] | info from log
[INFO|# 5584|2008-03-11 11:35:48] MainApp| Received connection from
[WARN|# 5584|2008-03-11 11:35:48] | warn from log
[ERRO|# 5584|2008-03-11 11:35:48] | error from log
[FATA|# 5584|2008-03-11 11:35:48] | fatal from log
[DEBU|# 5584|2008-03-11 11:35:48] | Message Columns (0.000000) SHOW FIELDS FROM messages
[DEBU|# 5584|2008-03-11 11:35:48] | Message Load (0.000000) SELECT * FROM messages WHERE (messages.`id` = 14)
[DEBU|# 5584|2008-03-11 11:35:48] | Message Load (0.010000) SELECT * FROM messages WHERE (messages.`id` = 14)
|
|
| Операции с WM | SEO консультации | |
| logger ror logger formatter |
| 10 июня 2008, 11:05 | pretty logs for rails 1.2 and 2.0 |
|---|---|
Ruslan Voloshin Живет: Odessa,UKR Сообщений: 2441 Рейтинг: 616.0 Рег: 13 марта 2007 Его блог |
|
logger.debug('debug from log'){ "Received connection from" }
logger.info('info from log')
logger.info("MainApp"){ "Received connection from" }
rails 1.2.6
[DEBU|# 5880|2008-03-11 16:07:47] debug from log: Received connection fr
[INFO|# 5880|2008-03-11 16:07:47] : info from log
[INFO|# 5880|2008-03-11 16:07:47] MainApp: Received connection from
rails 2.0.2
[DEBU|# 5880|2008-03-11 16:07:47] debug from log
[INFO|# 5880|2008-03-11 16:07:47] : info from log
[INFO|# 5880|2008-03-11 16:07:47] MainApp
И так после путем долгий патчей получилась такая версия которая работает с обеими версиями rails 1.2x and 2.0
и так подключаем app/config/environment.rb
Rails::Initializer.run do |config|
....
end
require 'logger_core_ext'
Содержимое app/lib/logger_core_ext.rb
=begin
====app/config/environment.rb
require 'logger_core_ext'
=end
class Logger
# Used for rails 1.2.x
alias format_message old_format_message
class Formatter
def call(severity, time, progname, msg)
"[%s|#%5d|%s] %s: %s\n" % [severity[0..3], $$, time.to_s(:db), progname, msg2str(msg)]
end
end
end
module ActiveSupport
# Used for rails 2.0
class BufferedLogger
module Severity
def level_to_s(level)
case level
when 0
'DEBUG'
when 1
'INFO'
when 2
'WARN'
when 3
'ERROR'
when 4
'FATAL'
when 5
'UNKNOWN'
end
end
end
def add(severity, message = nil, progname = nil, &block)
return if @level > severity
# message = (message || (block && block.call) || progname).to_s
message = (message || (block && block.call) || progname).to_s
# If a newline is necessary then create a new message ending with a newline.
# Ensures that the original message is not mutated.
message = "#{message}\n" unless message[-1] == ?\n
message = "[%s|#%5d|%s] %s: %s" % [level_to_s(severity)[0..3], $$, Time.now.to_s(:db), progname, message]
@buffer << message
auto_flush
message
end
end
end
|
|
| Операции с WM | SEO консультации | |
| logger rails 2.0 pretty logger rails logger format |
| 13 августа 2010, 01:37 | RE: Расширенное логированеи с помощью log4r |
|---|---|
skif Живет: не указан Сообщений: 1 Рейтинг: 0.0 Рег: 15 июля 2010 |
|
| 13 августа 2010, 09:17 | RE: RE: Расширенное логированеи с помощью log4r |
|---|---|
Ruslan Voloshin Живет: Odessa,UKR Сообщений: 2441 Рейтинг: 616.0 Рег: 13 марта 2007 Его блог |
|
__FILE__ __LINE__ |
|
| Операции с WM | SEO консультации | |