1

prod、dev、test 以外の環境の padrino ロガーを有効にするにはどうすればよいですか。たとえば、ステージ環境のように?

ステージ環境の padrino アプリがファイル ログに書き込みません。

私は試した

Padrino::Logger::Config[:stage][:stream] = :to_file
Padrino::Logger::Config[:stage][:log_level]  = :devel

しかし、私はエラーを受け取りました

$ - > RACK_ENV=homolog bundle exec padrino start
Users/carlospereira/ws/nutri/config/boot.rb:15:in `<top (required)>': undefined method `[]=' for nil:NilClass (NoMethodError)
from /Users/carlospereira/.rvm/gems/ruby-1.9.2-p320@nutri/bundler/gems/padrino-framework-94d09af7573a/padrino-core/lib/padrino-core/cli/base.rb:24:in `require'
from /Users/carlospereira/.rvm/gems/ruby-1.9.2-p320@nutri/bundler/gems/padrino-framework-94d09af7573a/padrino-core/lib/padrino-core/cli/base.rb:24:in `start'
from /Users/carlospereira/.rvm/gems/ruby-1.9.2-p320@nutri/gems/thor-0.15.2/lib/thor/task.rb:27:in `run'
from /Users/carlospereira/.rvm/gems/ruby-1.9.2-p320@nutri/gems/thor-0.15.2/lib/thor/invocation.rb:120:in `invoke_task'
from /Users/carlospereira/.rvm/gems/ruby-1.9.2-p320@nutri/gems/thor-0.15.2/lib/thor.rb:275:in `dispatch'
from /Users/carlospereira/.rvm/gems/ruby-1.9.2-p320@nutri/gems/thor-0.15.2/lib/thor/base.rb:408:in `start'
from /Users/carlospereira/.rvm/gems/ruby-1.9.2-p320@nutri/bundler/gems/padrino-framework-94d09af7573a/padrino-core/bin/padrino:9:in `<top (required)>'
from /Users/carlospereira/.rvm/gems/ruby-1.9.2-p320@nutri/bin/padrino:23:in `load'
from /Users/carlospereira/.rvm/gems/ruby-1.9.2-p320@nutri/bin/padrino:23:in `<main>'

私のboot.rbには次のものがあります:

PADRINO_ENV  = ENV["PADRINO_ENV"] ||= ENV["RACK_ENV"] ||= "development"  unless defined?(PADRINO_ENV)
PADRINO_ROOT = File.expand_path('../..', __FILE__) unless defined?(PADRINO_ROOT)

require 'rubygems' unless defined?(Gem)  
require 'bundler/setup'
Bundler.require(:default, PADRINO_ENV)

Padrino::Logger::Config[:homolog][:stream] = :to_file
Padrino::Logger::Config[:homolog][:log_level]  = :devel

Padrino.before_load do
  Encoding.default_internal = nil
end

Padrino.after_load do
  DataMapper.finalize
end

Padrino.load!

コメントをカットしましたが、15行目は

Padrino::Logger::Config[:homolog][:stream] = :to_file

私も試しました

if PADRINO_ENV == 'homolog'
  log_file_name = "#{PADRINO_ROOT}/log/#{PADRINO_ENV}_#{(ENV['APP_PROCESS_NAME'] || File.basename($0))}.log"
  log_file = File.new(log_file_name, "a+")
  PADRINO_LOGGER = { :homolog    => { :log_level => :debug, :stream => log_file }} 
end

しかし、私はまだメッセージを受け取ります:

/Users/carlospereira/ws/nutri/config/boot.rb:19: warning: already initialized constant PADRINO_LOGGER
No logging configuration for :homolog found, falling back to :production

19行目は

PADRINO_LOGGER = { :homolog    => { :log_level => :debug, :stream => log_file }}

また、ログファイルにはログが書き込まれません。

何か案は?

Tkz

4

3 に答える 3

3

これが、ステージング環境でそれを有効にした方法です。

の関連部分config/boot.rb

PADRINO_LOGGER = { :staging => { :log_level => :debug, :stream => :to_file }} if PADRINO_ENV == 'staging'
于 2012-11-29T12:50:33.137 に答える
2

これを設定できますconfig/boot.rb

Padrino::Logger::Config[:stage][:stream] = :to_file
Padrino::Logger::Config[:stage][:log_level]  = :devel

API ドキュメントを参照

于 2012-11-28T12:17:33.763 に答える
0

私の解決策は、ハッシュを使用することでした。そうしないと、ログにASCIIカラーが表示されます。

Padrino::Logger::Config[:development] = { :log_level => :debug, :stream => :to_file }
于 2014-01-24T09:33:05.903 に答える