投稿

9月, 2018の投稿を表示しています

EBに置いたrailsからAmazon Kinesis Data FirehoseでlogをamazonESに投げる

はじめに ちょっとググるとamazonESにログを送信するのにfluentd(td-agent)を利用するケースが多いですが、その場合以下のライブラリを利用するみたいなのが多く出てきます。
https://github.com/atomita/fluent-plugin-aws-elasticsearch-service
ただ、メンテナンスされてないっぽいのと、Amazon Kinesis Data Firehoseを利用したほうが楽そうだったので設定してみました。

※EBの設定はしてあるものとします

Railsの設定 logrageでjsonのlog吐き出す

参考
https://qiita.com/ichi_s/items/7cf6ce5dbfaa00976dd4

Gemfile
gem 'lograge' gem 'logstash-event' gem "rack-user_agent"
config/initializers/lograge.rb
Rails.application.configure do config.lograge.enabled = true config.lograge.base_controller_class = ['ActionController::API', 'ActionController::Base'] config.lograge.formatter = Lograge::Formatters::Logstash.new config.lograge.keep_original_rails_log = true config.lograge.logger = ActiveSupport::Logger.new "#{Rails.root}/log/lograge_#{Rails.env}.log" config.lograge.custom_options = lambda do |event| payload = event.payload data = payload.slice(*%i( uuid host remote_ip user_agent …

Xcode10対応

はじめに Xcode10になって対応した内容を簡単にまとめ

エラー1Multiple commands error when building with Xcode 10 いろいろ解決方法が出ているが(Copy Bundle Resource のinfo.plist削除、Product Module Nameをrenameなど)どれをやっても駄目なのでLegacy Build systemでとりあえず逃げる。(自分の場合はpods関連っぽいのでpodのupdateに期待)
https://stackoverflow.com/questions/50718018/xcode-10-error-multiple-commands-produce

エラー22018-09-22 12:34:06.586869+0900 Nekostabe[2645:713106] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Failed to allocate data stores for 2147483647 rows in section 8. Consider using fewer rows'
結構ハマりましたが、enumの値を取得する箇所で、rawValueするべき箇所がなぜかhashValueになっていて正しい数字が返らずエラーになっていた(今まではたまたま動いていた?)。

enum RowIndex { case header case content case footer case count } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { //return RowIndex.header.hashValue 今までは大丈夫だったが、今回動かなくなった return RowIndex.header.rawValue }
ついでにswift 4.2から採用されたenumのCaseIterableに…