Module: Appsignal

Defined in:
lib/appsignal.rb,
lib/appsignal/cli.rb,
lib/appsignal/agent.rb,
lib/appsignal/config.rb,
lib/appsignal/marker.rb,
lib/appsignal/version.rb,
lib/appsignal/aggregator.rb,
lib/appsignal/auth_check.rb,
lib/appsignal/transaction.rb,
lib/appsignal/transmitter.rb,
lib/appsignal/rack/listener.rb,
lib/appsignal/integrations/rails.rb,
lib/appsignal/rack/instrumentation.rb,
lib/appsignal/transaction/formatter.rb,
lib/appsignal/integrations/capistrano.rb,
lib/appsignal/aggregator/post_processor.rb,
lib/appsignal/aggregator/middleware/chain.rb,
lib/appsignal/transaction/params_sanitizer.rb,
lib/appsignal/aggregator/middleware/delete_blanks.rb,
lib/appsignal/integrations/capistrano/careful_logger.rb,
lib/appsignal/aggregator/middleware/action_view_sanitizer.rb,
lib/appsignal/aggregator/middleware/active_record_sanitizer.rb

Defined Under Namespace

Modules: CarefulLogger, Integrations, Rack Classes: Agent, Aggregator, AuthCheck, CLI, Config, Marker, Transaction, Transmitter

Constant Summary collapse

VERSION =
'0.7.1'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.agentObject

Returns the value of attribute agent.



8
9
10
# File 'lib/appsignal.rb', line 8

def agent
  @agent
end

.configObject

Returns the value of attribute config.



8
9
10
# File 'lib/appsignal.rb', line 8

def config
  @config
end

.in_memory_logObject

Returns the value of attribute in_memory_log.



8
9
10
# File 'lib/appsignal.rb', line 8

def in_memory_log
  @in_memory_log
end

.loggerObject

Returns the value of attribute logger.



8
9
10
# File 'lib/appsignal.rb', line 8

def logger
  @logger
end

Class Method Details

.active?Boolean

Returns:

  • (Boolean)


96
97
98
# File 'lib/appsignal.rb', line 96

def active?
  config && config[:active] == true
end

.add_exception(exception) ⇒ Object



50
51
52
53
54
55
# File 'lib/appsignal.rb', line 50

def add_exception(exception)
  return if Appsignal::Transaction.current.nil? || exception.nil?
  unless is_ignored_exception?(exception)
    Appsignal::Transaction.current.add_exception(exception)
  end
end

.enqueue(transaction) ⇒ true

Convenience method for adding a transaction to the queue. This queue is managed and is periodically pushed to Appsignal.

Returns:

  • (true)

    True.

Since:

  • 0.5.0



31
32
33
# File 'lib/appsignal.rb', line 31

def enqueue(transaction)
  agent.enqueue(transaction)
end

.is_ignored_exception?(exception) ⇒ Boolean

Returns:

  • (Boolean)


100
101
102
# File 'lib/appsignal.rb', line 100

def is_ignored_exception?(exception)
  Appsignal.config[:ignore_exceptions].include?(exception.class.name)
end

.jsonObject



86
87
88
# File 'lib/appsignal.rb', line 86

def json
  ActiveSupport::JSON
end

.listen_for_exception(&block) ⇒ Object



35
36
37
38
39
40
# File 'lib/appsignal.rb', line 35

def listen_for_exception(&block)
  yield
rescue Exception => exception
  send_exception(exception)
  raise exception
end

.post_processing_middleware {|@post_processing_chain| ... } ⇒ Object

Yields:

  • (@post_processing_chain)


90
91
92
93
94
# File 'lib/appsignal.rb', line 90

def post_processing_middleware
  @post_processing_chain ||= Appsignal::Aggregator::PostProcessor.default_middleware
  yield @post_processing_chain if block_given?
  @post_processing_chain
end

.send_exception(exception) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/appsignal.rb', line 42

def send_exception(exception)
  return if is_ignored_exception?(exception)
  transaction = Appsignal::Transaction.create(SecureRandom.uuid, ENV.to_hash)
  transaction.add_exception(exception)
  transaction.complete!
  Appsignal.agent.send_queue
end

.startObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/appsignal.rb', line 10

def start
  if config
    if config[:debug]
      logger.level = Logger::DEBUG
    else
      logger.level = Logger::INFO
    end
    logger.info("Starting appsignal-#{Appsignal::VERSION}")
    @agent = Appsignal::Agent.new
    at_exit { @agent.shutdown(true) }
  else
    logger.error("Can't start, no config loaded")
  end
end

.start_logger(path) ⇒ Object



75
76
77
78
79
80
81
82
83
84
# File 'lib/appsignal.rb', line 75

def start_logger(path)
  if path && File.writable?(path) && !ENV['DYNO']
    @logger = Logger.new(File.join(path, 'appsignal.log'))
    @logger.formatter = Logger::Formatter.new
  else
    @logger = Logger.new($stdout)
  end
  @logger.level = Logger::INFO
  @logger << @in_memory_log.string if @in_memory_log
end

.tag_request(params = {}) ⇒ Object



57
58
59
60
61
# File 'lib/appsignal.rb', line 57

def tag_request(params={})
  transaction = Appsignal::Transaction.current
  return false unless transaction
  transaction.set_tags(params)
end

.transactionsObject



63
64
65
# File 'lib/appsignal.rb', line 63

def transactions
  @transactions ||= {}
end