首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否为stage环境配置padrino记录器?

是否为stage环境配置padrino记录器?
EN

Stack Overflow用户
提问于 2012-11-28 03:18:17
回答 3查看 1.9K关注 0票数 1

如何启用除生产、开发或测试以外的其他环境的padrino记录器。例如,舞台环境?

我的padrino应用程序在我的舞台环境中没有写入文件日志。

我试过了

代码语言:javascript
复制
Padrino::Logger::Config[:stage][:stream] = :to_file
Padrino::Logger::Config[:stage][:log_level]  = :devel

但是我收到了这个错误

代码语言:javascript
复制
$ - > 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中,我有:

代码语言:javascript
复制
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行是

代码语言:javascript
复制
Padrino::Logger::Config[:homolog][:stream] = :to_file

我也试过了

代码语言:javascript
复制
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

但我还是得到了一个信息:

代码语言:javascript
复制
/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行是

代码语言:javascript
复制
PADRINO_LOGGER = { :homolog    => { :log_level => :debug, :stream => log_file }}

并且不在日志文件中写入日志。

有什么想法吗?

Tkz

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-29 20:50:33

这就是我们在暂存环境中启用它的方式。

config/boot.rb的相关部分

代码语言:javascript
复制
PADRINO_LOGGER = { :staging => { :log_level => :debug, :stream => :to_file }} if PADRINO_ENV == 'staging'
票数 3
EN

Stack Overflow用户

发布于 2012-11-28 20:17:34

您可以在config/boot.rb中设置此设置

代码语言:javascript
复制
Padrino::Logger::Config[:stage][:stream] = :to_file
Padrino::Logger::Config[:stage][:log_level]  = :devel

请参阅API Doc

票数 2
EN

Stack Overflow用户

发布于 2014-01-24 17:33:06

我的解决方案是使用散列,否则我会在日志中得到ascii颜色:

代码语言:javascript
复制
Padrino::Logger::Config[:development] = { :log_level => :debug, :stream => :to_file }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13591453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档