Простое и идеальное ведение журнала в Синатре - PullRequest
4 голосов
/ 10 марта 2012

Я просмотрел несколько блогов и сайтов, которые давали мне некоторую информацию о том, как войти в sinatra, но он не работал для моего приложения, а также я прошел через гем под названием sinatra-logger , не пробовал, хотел знаю идеальный и простой способ «войти» в синатру. Как мы делаем logger.info для рельсов.

Код, который я пробовал и не работал, взят со следующего сайта ссылка , а также некоторые из ссылок SO слишком указывают на тот же подход, который использовался в ссылке выше.

configure do
 LOGGER = Logger.new("sinatra.log")
end

helpers do
 def logger
  LOGGER
 end
end

Я написал это в app.rb моего приложения, оно не работает , говоря, что неопределенный метод `configure 'для приложения: Модуль

Любые указатели или руководства будут полезны. Спасибо.

редактирует Прямо сейчас я использую запись файла, чтобы регистрировать мои ошибки и сообщения:

File.open('log.txt', 'a') do |f|
 f.write "#{status}-#{CONFIG.api_url}-#{data.inspect}-tweet}"
end

Ответы [ 2 ]

18 голосов
/ 13 марта 2012

Если вы используете Sinatra 1.3, вы можете войти в систему, как в рельсах, с logger.info

Следующее скопировано из Sinatra Readme :


Logging

В области запроса помощник регистратора предоставляет экземпляр Logger:

get '/' do
  logger.info "loading data"
  # ...
end

Этот регистратор автоматически учитывает параметры ведения журнала вашего Rack-обработчика.Если ведение журнала отключено, этот метод возвратит фиктивный объект, поэтому вам не нужно беспокоиться о маршрутах и ​​фильтрах по этому поводу.

Обратите внимание, что ведение журнала включено только для Sinatra :: Application по умолчанию, поэтому есливы наследуете от Sinatra :: Base, вы, вероятно, захотите включить его самостоятельно:

 class MyApp < Sinatra::Base
   configure :production, :development do
     enable :logging
   end
 end

Чтобы избежать установки промежуточного программного обеспечения для ведения журналов, установите для параметра ведения журнала значение nil.Однако имейте в виду, что регистратор в этом случае вернет ноль.Обычный вариант использования - это когда вы хотите установить свой собственный регистратор.Синатра будет использовать все, что найдет в env ['rack.logger'].


Rack :: CommonLogger генерирует сообщения журнала внутренне (я думаю).

2 голосов
/ 15 августа 2014

См. Мое предложение здесь: Вход в Sinatra?

Однако из вашего вопроса звучит так, как будто проблема в том, что приложение является модулем.

ваш Sinatra mainкласс должен выглядеть примерно так:

class App < Sinatra::Base

в отличие от

module App < Sinatra::Base

Убедитесь, что вы определили его как класс, и эта ошибка должна исчезнуть.

...