Как мы можем записать все, что сделано Net::Sftp, в файл

#ruby-on-rails #ruby

Вопрос:

как регистрировать каждое действие Net::Sftp в файл в ruby on rails для отладки и как я могу подробно записывать::отладку в файл журнала.

 sftp = Net::SFTP.start(config[:host], config[:user], config[:options], verbose::debug)  files_arr = []  sftp.connect!  sftp.dir.foreach(src_dir) do |entry|  file_name = entry.name  begin  if entry.file? amp;amp; (file_name.end_with?(".xml") || file_name.end_with?(".zip"))  sftp.download!(File.join(src_dir, file_name), File.join(dest_dir, file_name))  files_arr lt;lt; file_name  end  rescue Exception =gt; e  next  end  end  sftp.channel.eof!  sftp.close_channel unless sftp.closed?  

моя цель-записать все, что происходит в этом коде, в файл, как я могу это сделать.

Комментарии:

1. Пожалуйста, объясните, что вы на самом деле пытаетесь сделать, с достаточным количеством кода для минимально воспроизводимого примера. В идеале также код, который у вас есть на данный момент, и конкретные ошибки или сбои, с которыми вы сталкиваетесь с ним. Тогда люди смогут дать вам полезные ответы! (FWIW, вы, вероятно , просто хотите Rails.logger , чтобы это было записано в /logs каталог.)

2. ДжонП Я отредактировал свой вопрос и добавил пример кода, добавил рельсы. регистратор запишет все в журнал prod, который очень сложно найти, поэтому я хотел записать его в определенный файл.

3. Дело в том, что использование Rails.logger в вашем коде всего одной строки гарантирует, что ваши сообщения журнала будут помечены временем, хронологически и последовательно отформатированы. Если вы добавите четкий идентификатор для своих сообщений (например, «MyLogLine: foo»), вы сможете быстро искать их в любом текстовом редакторе. И, если вы хотите иметь подробные журналы, это в значительной степени именно то, для чего Rails.logger они были разработаны! Кроме того, если вы хотите указать на определенное местоположение файла, вы можете настроить Rails.logger это. Не изобретайте велосипед, когда у Rails есть готовый для вас.

4. да, это именно то, что я хочу, это записать всю информацию из приведенного выше раздела кода в другой файл журнала, а не в стандартный файл development.log или production.log. итак, какова будет конфигурация Rails.logger У вас есть пример кода?

Ответ №1:

Следуя комментариям, кажется, что вы хотите определить пользовательский регистратор, который затем можно использовать для записи вашей пользовательской информации в свой собственный файл. Что-то подобное в соответствующем environment.rb должно делать то, что вам нужно.

 my_logger = Logger.new('log/my_logger.log') my_logger.level = Logger::DEBUG  

Затем вы можете добавить my_logger 'MESSAGE' в соответствующие пункты своего кода, чтобы добавить записи в свой пользовательский файл журнала.