Почему я должен использовать Rails.logger вместо регистратора в моем классе модели

Я новичок в рельсах. Я использую log4r для ведения журнала. Я заметил, что когда я использую только регистратор в своих моделях, он не работает. Но если я использую Rails.logger, журналы идут нормально. Почему это происходит? Пожалуйста, помогите мне понять.

  def self.create_user_from_params(auth_params)
    Rails.logger.debug "auth params are ";
    return nil;
  end

работает. Но если я использую

  def self.create_user_from_params(auth_params)
    logger.debug "auth params are ";
    return nil;
  end

это не работает. Вот мой log4r yml

log4r_config:
  # define all loggers ...
  loggers:
    - name      : production
      level     : INFO
      trace     : 'false'
      outputters :
      - datefile
    - name      : development
      level     : DEBUG
      trace     : 'true'
      outputters :
      - datefile

  # define all outputters (incl. formatters)
  outputters:
  - type: DateFileOutputter
    name: datefile
    dirname: "log"
    filename: "server.log" # notice the file extension is needed!
    formatter:
      date_pattern: '%H:%M:%S'
      pattern     : '%d %l: %m '
      type        : PatternFormatter

update Я только что вспомнил, что добавил 'config.active_record.logger = Logger.new("log/sql.log")' в свой config/application.rb

Я использовал это, так как хотел записать свои sql в отдельный файл. Теперь у меня другой вопрос. Как записать sql в отдельный файл без изменения config.active_record.logger?


person Anirudhan J    schedule 11.06.2013    source источник
comment
Журналы добавляются в server.log?   -  person Jesse Wolgamott    schedule 11.06.2013
comment
Нет. Если я просто использую logger.info/logger.debug, он не переходит на server.log. Если я использую Rail.logger, то он переходит на server.log   -  person Anirudhan J    schedule 11.06.2013
comment
Похоже, вы не используете log4r — вы просто используете регистратор по умолчанию. Моя рекомендация: не тратьте время на это — потратьте время на важные функции, а когда вы узнаете больше о Rails, вернитесь и займитесь настройкой и использованием регистратора.   -  person Jesse Wolgamott    schedule 11.06.2013


Ответы (1)


Ознакомьтесь с этим подробным руководством по использованию Log4r.

В частности, вашу проблему можно решить, установив для config.logger значение Log4r::Logger["development"] (поэтому Rails.logger будет вести журнал в Log4r) или указав logger = Log4r::Logger["development"] в нужных файлах. использовать «регистратор». Однако установка флага config.logger должна работать как с Rails.logger.debug, так и с logger.debug.

SQL в отдельном файле также подробно описан в связанном блоге. В основном вы используете конвейер уведомлений Rails и записываете в пользовательский регистратор, который записывает в другой файл.

person mmlac    schedule 01.12.2013